我刚开始使用$.on()
用于收集乘客个人数据的动态表格。
这是典型的,你需要点击一个添加按钮,在桌子末尾为更多乘客添加一个新行。
我必须验证子ID(RUT)它的效果很好,但是当验证失败时,我会显示警告,告诉用户数据不正确,所以,第一次看起来不错,但如果用户再次失败,它显示2个警报,然后是3,4,......等等,因为用户继续努力输入无效ID。
如果有人可以提供帮助,我会很高兴,为了纠正这种行为,每次失败只显示一个警报。单击“确定”五次非常烦人,这可能是项目落后的原因。
这是我使用的代码:
$("#tabdata").on("focus",".rut",function(){
$(this).css("border","1px solid lightSkyBlue");
});
$("#tabdata").on("focus",".rut",function(){
$(this).blur(function(e){
var rut = $(this).val();
var rutarr = rut.split("-");
if (rutarr.length==1 || dv(rutarr[0].toLowerCase())!=rutarr[1].toLowerCase()){
//ver si el rut esta mal escrito, sin guion split no separara nada.
$(this).css("border","1px solid Red");
alert("EPA!!!, no tan rapido, el Rut ingresado no es valido, por favor revisa bien.");
}else{
$(this).css("border","1px solid Green");
}
});
});
这是您看到我的史诗失败的页面。
答案 0 :(得分:1)
这种情况正在发生,因为您正在另一个事件处理程序中绑定事件处理程序。每次.rut
元素为focus
时,另一个blur
事件处理程序将附加到该元素。从blur
事件处理程序中删除focus
事件处理程序,一切都会很好:
$("#tabdata").on("focus",".rut",function(){
$(this).css("border","1px solid lightSkyBlue");
}).on("blur",".rut", function(e){
var rut = $(this).val(),
rutarr = rut.split("-");
if (rutarr.length == 1 || dv(rutarr[0].toLowerCase()) != rutarr[1].toLowerCase()){
//ver si el rut esta mal escrito, sin guion split no separara nada.
$(this).css("border","1px solid Red");
alert("EPA!!!, no tan rapido, el Rut ingresado no es valido, por favor revisa bien.");
} else {
$(this).css("border","1px solid Green");
}
});