jQuery on(“焦点”,[...])多次进行处理

时间:2012-01-13 20:47:35

标签: jquery dynamic

我刚开始使用$.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");

        }
    });
});

这是您看到我的史诗失败的页面。

1 个答案:

答案 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");

    }
});