关于jquery多个bind事件的处理
现在绑定了2个jquery的验证。
一个是点击 另一个 是失去焦点触发。
$('#name').bind('blur', function(){//失去焦点触发
if($('#name').val()!=null||!($('#name').val().euqals(''))){
var url = '${ctx}/ajax/ajax!checkName.action';
var data= "name=" + $('#name').val();
$.ajax({
url:url,
data:data,
type:'POST',
success:function(data){
$('#my').html(data);
}
});
}
$("#sumb").bind('click',function(){//点击验证
//$('#name').unbind();
var url = '${ctx}/ajax/ajax!organExist.action';
var data= {"provinceId":$('#province').val(),"cityId":$('#city').val(),"countyId":$('#county').val()};
$.ajax({
url:url,
data:data,
type:'POST',
success:function(data){
alert(data);
}
});
});
但是 我进入页面之后 先进第一个bind 失去焦点 判断 起作用了 。然后 点击恩扭 触发第2个 bind 就 会弹出2次alert
同时第一个 bind的验证失效。小弟初学jquery 求大神 帮忙解答下 谢谢了
现在绑定了2个jquery的验证。
一个是点击 另一个 是失去焦点触发。
$('#name').bind('blur', function(){//失去焦点触发
if($('#name').val()!=null||!($('#name').val().euqals(''))){
var url = '${ctx}/ajax/ajax!checkName.action';
var data= "name=" + $('#name').val();
$.ajax({
url:url,
data:data,
type:'POST',
success:function(data){
$('#my').html(data);
}
});
}
$("#sumb").bind('click',function(){//点击验证
//$('#name').unbind();
var url = '${ctx}/ajax/ajax!organExist.action';
var data= {"provinceId":$('#province').val(),"cityId":$('#city').val(),"countyId":$('#county').val()};
$.ajax({
url:url,
data:data,
type:'POST',
success:function(data){
alert(data);
}
});
});
但是 我进入页面之后 先进第一个bind 失去焦点 判断 起作用了 。然后 点击恩扭 触发第2个 bind 就 会弹出2次alert
同时第一个 bind的验证失效。小弟初学jquery 求大神 帮忙解答下 谢谢了
//名字失去焦点
<tr bgcolor="#FFFFFF">
<td class="form_key" width="10%"><font color="red">*</font>名称</td>
<td class="form_value"><input type="text" id="name" name="name"
size="40" value="${name}"
<%if (request.getAttribute("name") != null) {%> disabled="disabled"
<%}%> /> <label class="error" id="my"><font color="red">
</font></label></td>
</tr>//点击sumbit 触发事件
<tr bgcolor="#FFFFFF">
<td class="form_key"> </td>
<td height="25"><input type="submit" class="button_mouseout"
id="sumb" onmouseout="this.className='button_mouseout'"
onmouseover="this.className='button_mouseover'" value="保存" />
if($('#name').val()!=null||!($('#name').val().euqals(''))){
var url = '${ctx}/ajax/ajax!checkName.action';
var data= "name=" + $('#name').val();
$.ajax({
url:url,
data:data,
type:'POST',
success:function(data){
$('#my').html(data);
}
});
e.preventDefault();
});
$("#sumb").bind('click',function(e){//点击验证
//$('#name').unbind();
var url = '${ctx}/ajax/ajax!organExist.action';
var data= {"provinceId":$('#province').val(),"cityId":$('#city').val(),"countyId":$('#county').val()};
$.ajax({
url:url,
data:data,
type:'POST',
success:function(data){
alert(data);
}
});
e.preventDefault();
});
不是这个意思。简单点说吧。你现在的问题无非是name的验证结果还没返回就执行了整体的提交事件。那你将name的ajax请求由异步改为同步。就可以避免你这个问题了一般有blur这种需求的大多是想验证唯一性的,那你哪怕是前台验证通过,提交到后台后还是要再次做有效性验证的。PS:这种使用blur事件完成唯一性验证,其实最主要的目的是为了用户体验,而不是要靠它完成最终验证