Javascript 关闭警报窗口后,无法单击“提交”按钮

Javascript 关闭警报窗口后,无法单击“提交”按钮,javascript,jquery,button,click,save,Javascript,Jquery,Button,Click,Save,我遇到了这个问题,当我检测到相同的值时,当它在提交时,错误被触发时,按钮就像保存时卡住一样不可点击。有人能帮我解决这个问题吗 这是我的Jquery $("#btnSaveShift").on('click', function (e) { var gvDetDDLs = $('#positionShiftGrid').find("input[name=shiftDay]"); $.each(gvDetDDLs, function () {

我遇到了这个问题,当我检测到相同的值时,当它在提交时,错误被触发时,按钮就像保存时卡住一样不可点击。有人能帮我解决这个问题吗

这是我的Jquery

  $("#btnSaveShift").on('click', function (e) {

        var gvDetDDLs = $('#positionShiftGrid').find("input[name=shiftDay]");
        $.each(gvDetDDLs, function () {
            var duplicateExists = false;
            var ddlShift = $("#ddlShiftDay option:selected").text();
            var currVal = $(this).val();
            gvDetDDLs.not(this).each(function () {
                if (ddlShift == currVal) {
                    duplicateExists = true;
                }
            });
            if (duplicateExists) {
                alert("Duplicate entry is not allowed");
                e.preventDefault();
                return false;
            }

        });
        return true;

    });

首先,您应该在表单提交时检查此项,而不是单击按钮


在这种情况下,e.preventDefault会破坏按钮的行为。

如果您想让按钮在错误后仍能工作,请在代码中删除prevent default并返回false

,html是什么样子的?您可以使用onsubmit事件处理程序,因此不需要调用preventDefault(),只需返回true或FALSE您不会比较在
gvDetDDLs中找到的任何内容。不是(this)
而是比较循环外部的
ddlShift==currVal
!!那么为什么需要该循环?@rps该循环用于检查网格值,并检查下拉列表中的值是否与网格值相同。完成表单提交的检查。表单提交时,也会发生同样的情况。警报消息显示后。submit按钮不起作用/不可点击。你能给我们提供托管代码吗?删除返回后,测试你的源代码很容易,当条件为真时循环不会停止。你能把它放在JSFIDLE上吗?