JavaScript验证页面控件值时的提示信息的定位
2009-12-01 10:43
411 查看
模仿asp.net
页面验证控件的现实错误提示信息的效果,用JavaScript
做了个方法,不过没有实现验证的效果,只是定位提示信息到目标元素的后面。
方法在IE6,IE7,FireFox3.5,Safair,Opera,Chorme
验证均可正常定位。
方法Imae(id,msg,css)
:insert_msg_after_element
创建一个用于显示消息的层。
第一个参数id
,就是目标元素的id
。
第二个参数msg
,就是要显示的信息。
第三个参数css
,定义消息框的样式。使用JSON
格式{color:
”
red
”
,fontsize:
”
12px
”
,border:
”
dotted 1px gray
”
}
调用这个方法,将在目标元素的后面显示错误消息。
Imae2(id,tag,css)
:insert_msg_after_element
创建一个用于显示消息的层。
第一个参数id
,就是目标元素的id
。
第二个参数tag
,是目标元素的属性,比如可以把要显示的消息写在元素的属性里面。例如:
<
input
type
="text"
id
=
"txt1"
err_msg
=
"
不能为空"
/>
第三个参数css
,定义消息框的样式。
rmd(id)
:移除一个消息层。
参数id
,为目标元素的id
,而不是要删除div
的id
。
查看效果:http://www.xiagezhao.com/validate2/validate/1.htm
下面是代码:
//
用于显示消息的层集合。用于验证通过时,删除提示消息
var
validateDivArray = [] ;
//
创建一个用于显示消息的层。
function
Imae2(id,tag,css){
var
obj = document.getElementById(id) ;
var
msg = obj.getAttribute(tag)
Imae(id,msg,css);
}
//
创建一个用于显示消息的层
function
Imae(id,msg,css){
var
obj = document.getElementById(id) ;
var
pos = new
Position(id);
if
(obj){
var
_msg = msg ;
var
_css = css ;
var
_color = "red"
,_fontsize = "12px"
,_border="dotted 1px gray"
;
var
_width = pos.width ;
var
_height = pos.height ;
//
设定默认值,在元素没有设置height
,或者height
设置为“auto
”时。
if
(!_width || _width=="100%"
|| _width=="auto"
){
if
(_width!=0)
switch
(obj.tagName)
{
case
"INPUT"
:{_width="150px"
}break
;
case
"SELECT"
:{_width="50px"
}break
;
//...
}
//_width=="100%"
}
if
(css){
if
(css.color){_color = css.color;}
if
(css.fontsize){_fontsize = css.fontsize;}
if
(css.border){_border = css.border;}
}
var
divMsg = document.createElement("div"
);
with
(divMsg.style){
//////////////////////////////////////////////////////////////////////////
//
给元素定位在IE
和FireFox
下面有一小处需要注意 //
// obj.style.top = 100 ;
这样写在IE
下面显示正常,但是在FireFox
下面就 //
//
无法正常定位。解决方法: solvent: obj.style.top = 100 + "px"; //
//////////////////////////////////////////////////////////////////////////
top = GetTop(id)+"px"
;
left = (GetLeft(id) +Math.abs(_width.replace("px"
,""
))+10)+"px"
;
color = _color;
border = _border;
fontSize = _fontsize;
position = "absolute"
;
zIndex = 9900+validateDivArray.length;
}
divMsg.innerHTML = _msg ;
var flag = false ;
for(var i =0 ;i<validateDivArray.length;i++){
if(validateDivArray[i][0] == obj){
flag = true ;
}
}
if(!flag){
validateDivArray[validateDivArray.length]=[obj,divMsg] ;
document.body.appendChild(divMsg);
}
}
}
//
从集合中移除一个消息层
function
rmd(id){
var
obj = document.getElementById(id);
if
(obj){
var
_obj = obj ;
if
(validateDivArray.length>0){
for
(var
i =0 ;i<validateDivArray.length;i++){
if
(validateDivArray[i][0] == obj){
if
(validateDivArray[i][1]){
document.body.removeChild(validateDivArray[i][1]);
validateDivArray.splice(i,1);
}
}
}
}
}
}
//
获取页面元素的Y
坐标
function
GetTop(id){
var
obj = document.getElementById(id);
if
(!obj)return
0;
var
top = 0 ;
while
(obj){
top += obj.offsetTop ;
obj = obj.offsetParent ;
}
return
top ;
}
//
获取页面元素的X
坐标
function
GetLeft(id){
var
obj = document.getElementById(id);
if
(!obj)return
0;
var
left = 0 ;
while
(obj){
left += obj.offsetLeft ;
obj = obj.offsetParent ;
}
return
left ;
}
//
元素坐标类,包涵四个属性,x,y,width.height;
function
Position(id){
var
_this = this
;
_this.top = 0 ;
_this.left = 0 ;
_this.width = 0 ;
_this.height = 0 ;
function
Init(){
var
obj = document.getElementById(id);
if
(obj){
_this.top = GetTop(id);
_this.left = GetLeft(id);
_this.width = obj.style.width ;
_this.height = obj.style.height ;
}
}
Init();//
构造方法
}
相关文章推荐
- 题目:JavaScript编程题 页面上输入一个年份(需验证),判断是否是闰年(能被4整除却不能被100整除的年份;能被400整除的是闰年),需在页面上显示提示信息
- 题目:JavaScript编程题 页面上输入一个年份(需验证),判断是否是闰年(能被4整除却不能被100整除的年份;能被400整除的是闰年),需在页面上显示提示信息
- JAVASCRIPT 提示信息 主要是使用了获取控件的位置进行定位
- Login控件在UpdatePanel内当验证用户信息成功后出现页面刷新的解决办法
- flex中验证控件出错提示信息字体太小的问题
- 输入信息页面js验证,提示信息
- 解决:EasyUI Dialog关闭后,验证提示信息仍显示在页面最上端
- 解决:EasyUI Dialog关闭后,验证提示信息仍显示在页面最上端
- .Net验证控件显示提示信息
- Login控件在UpdatePanel内当验证用户信息成功后出现页面刷新的解决办法
- javascript 正则表达式验证表单信息(光标离开会判断是否符合规定,不符合会提示)
- 框架中多个页面验证用户身份,弹出提示信息的一点技巧
- asp.ne如何使用javascript去验证客户端信息,如果验证成功则送往服务器端处理,否则在客户端提示用户(不返回到服务器端处理)
- javascript实现简单的页面右下角提示信息框
- 页面验证信息提示
- javascript实现简单的页面右下角提示信息框
- 解决:EasyUI Dialog关闭后,验证提示信息仍显示在页面最上端
- Login控件在UpdatePanel内当验证用户信息成功后出现页面刷新的解决办法
- Javascript_06_表单验证(离开单项,输入框后提示信息)
- jsp 使用javascript验证时,提示信息出现乱码