如下:一个页面如下含有两个或更多个FORM<form id="demo1">
<input id="aa" typeData="1">
<input id="bb" typeData="2">
<input id="cc">
<select id="dd" typeData="3">
</select>
</form><form id="demo2">
<input id="aa" typeData="1">
<input id="bb" typeData="2">
<input id="cc">
<select id="dd" typeData="3">
</select>
</form>----------
需求说明:
为以上所有form的元素中,所有包含typeData的元素绑定blur方法。调用的函数为 fn(document.getElementById('demo'),this)..也就是参数为form对象,还有本身this; 所以,函数和form的ID是有关系的。
也就是实现这样的效果<form id="demo1">
<input id="aa" typeData="1" onBlur="fn(document.getElementById('demo1')">
<input id="bb" typeData="2" onBlur="fn(document.getElementById('demo1')">
<input id="cc">
<select id="dd" typeData="3" onBlur="fn(document.getElementById('demo1')">
</select>
</form><form id="demo2">
<input id="aa" typeData="1" onBlur="fn(document.getElementById('demo2')">
<input id="bb" typeData="2" onBlur="fn(document.getElementById('demo2')">
<input id="cc">
<select id="dd" typeData="3" onBlur="fn(document.getElementById('demo2')">
</select>
</form>
如何实现呢?请写成通用框架形式,因为form可能有多个,form下的元素也不只是input
解决方案 »
- struts2 文件下载问题 Can not find a java.io.InputStream with the name [downloadFile]
- tomcat acceptCount="0"是什么意思
- JavaBean范围的问题
- java 开发短信,正式环境中,上行的时候偶尔会出现乱码,前面有三个问题的乱码???,心里拔凉拔凉的。
- 请问这个异常如何解决?
- <%@ page import ="SQLDATA" %>是什么意思?
- 介绍几个学JSP的网站,顺便散分
- jsp连接access不需要驱动和jdbc桥么
- 绝对菜鸟问题,关于tomcat下jsp环境的配置
- help!!!very easy!!在线等
- tomcat日志里的警告
- 求助,,js 判断一个字符串必须包括 字母,数字,特殊符号。。
$.ajax({
type:'GET',
url:'${pageContext.request.contextPath}/rank/queryClothTW.do',
dateType:'text',
cache:true,
success:function(text){
// $('#div_twoWeeks').empty().append(text);
// $('#div_twoWeeks').html(text);
document.getElementById("div_twoWeeks").innerHTML = text;
$('#div_twoWeeks').css('display','block');
$('#div_weeks').css('display','none');
$('#div_Months').css('display','none');
}
});
至于 form 可以用 父节点来获取 --我觉得这样不对吧,我举的例子是这样它的父节点就是form,但是,实际项目中input可能是放在 <div> <td> 等等 中的呀。因为input可能涉及到需要其他的修饰呀。所以获取父节点不大可取啊
先把所有的form取出来,然后遍历这个数组,对每个form的标签进行递归遍历。
这样在加onblur的时候就知道用哪个form对象了。
fun getForm(obj){
if (obj.nodeName!="form"){obj=obj.parentNode;}
return obj;
}
<form id="demo1">
<input id="aa" typeData="1" formId="demo1" value="aa">
<input id="bb" typeData="2" formId="demo1" value = "bb">
<input id="cc" value="cc" formId="demo1">
<select id="dd" typeData="3" formId="demo1">
</select>
</form> <form id="demo2">
<input id="ff" typeData="1" value="ff" formId="demo2">
<input id="gg" typeData="2" value = "gg" formId="demo2">
<input id="hh" value = "hh" formId="demo2">
<select id="ii" typeData="3" value="ii" formId="demo2">
</select>
</form> 为每个元素添加了它所在form的id参数。js方法就比较简单了:
$(function(){
var $doms = $("[typeData]");
for(var i =0;i<$doms.length;i++){
$doms.eq(i) .bind("blur",function(){
document.getElementById($(this).attr("formId"));
});
}
});
$(function(){ }里面完成,就不用你每个元素去添ID了。
完整代码如下:
<script type="text/javascript">
$(function(){
var $forms = $("form");
for(var i =0;i<$forms.length;i++){
$forms.eq(i).children().attr("formId",$forms.eq(i).attr("id"));
}
var $doms = $("[typeData]");
for(var i =0;i<$doms.length;i++){
$doms.eq(i) .bind("blur",function(){
//alert($(this).attr("formId"));
document.getElementById($(this).attr("formId"));
});
}
});
</script>
下面是我摸索出的代码:
function forOnblurToElement(){
var forms = document.getElementsByTagName("form");
for(var i=0;i<forms.length;i++){
var count = forms[i].elements.length;
var formId;
with(forms[i]){
formId = getAttribute("id");
$("#" +getAttribute("id")).submit(function(){
return Validator.Validate(document.getElementById(formId),3);
});
}
for(var j=0;j<count;j++) {
with(forms[i].elements[j]){
var _dataType = $(forms[i].elements[j]).attr("dataType");
if(_dataType == null) continue;
$(forms[i].elements[j]).blur(function(){
Validator.ValidateOne(document.getElementById(formId), 3, this);
});
}
}
}
}在onready时候调用下这个函数即可