javascript - js/jquery - event.preventdefault 似乎在 Firefox 中不起作用

标签 javascript jquery firefox

我有一些由其他人编写的代码,如果邮政编码的格式不正确,这些代码应该打开一个弹出窗口并停止提交页面。它在 IE 和 Chrome 中工作正常。但在 Firefox 中,我收到弹出窗口,单击“确定”,然后页面提交。有人可以查看代码并让我知道哪里做错了吗?代码粘贴在此消息末尾。

谢谢

<script type="text/javascript">
$(init);

function init() {
    $('form').validate({
        error_messages: {

        },
        failure: function (errors) {
            //alert(errors);
            $(".errMsg").show();
            return false;
        },
        success: function () {
            //alert('passed');
            //return true;
        }
    });

    $('#<%= btnAdd.ClientID %>').click(function (event) {
        if (beginZipValidation()) {
            //event.preventDefault();

            return;
        }
    });
}

function clearText(mybox, mymsg) {
    if (document.forms['form1'].elements[mybox].value == mymsg) {
        document.forms['form1'].elements[mybox].value = '';
        document.forms['form1'].elements[mybox].style.color = '#000000';
    }

}

function resetText(mybox, mymsg) {
    if (document.forms['form1'].elements[mybox].value == '') {
        document.forms['form1'].elements[mybox].value = mymsg;
        document.forms['form1'].elements[mybox].style.color = '#C0C0C0';
    }
}



function beginZipValidation() {
    //alert('begin validation');
    var zip = $('#<%= Zip.ClientID %>').val().replace(/ /g, '').toUpperCase();
    var cID = $("#<%= ddlCountry.ClientID %> option:selected").val();
    if (!zipCodeValidation(true, cID, zip)) {
        return false;
    }

    //alert('true');
    return true;
}

function zipCodeValidation(shouldValidateEmpty, countryID, zc) {
    //alert('zipCodeValidation');
    if (zc == '' || zc == 'POSTALCODE') {
        if (!shouldValidateEmpty) {
            return true;
        }
    }
    else {
        switch (countryID) {
            case '226':
                if (/^\d{5}(-\d{4})?$/.test(zc))
                    return true;
                break;
            case '38':
                if (/^([ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ])\ ?([0-9][ABCEGHJKLMNPRSTVWXYZ][0-9])$/.test(zc))
                    return true;
                break;
            case '225':
                if (/^(GIR 0AA|[A-PR-UWYZ]([0-9][0-9A-HJKPS-UW]?|[A-HK-Y][0-9][0-9ABEHMNPRV-Y]?)[0-9][ABD-HJLNP-UW-Z]{2})$/.test(zc))
                    return true;
                break;
            case '13':
                if (/^(((2|8|9)\d{2})|((02|08|09)\d{2})|([1-9]\d{3}))$/.test(zc))
                    return true;
                break;
        }
    }

    alert('The postal code provided does not fit the format for the selected country. Please adjust and try again.');
    if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; }
    event.preventDefault();

    return false;

}

最佳答案

这可能就像选择器错误一样简单:

尝试更改此设置:

 $('#<%= btnAdd.ClientID %>').click(function (event) {
        if (beginZipValidation()) {
            //event.preventDefault();

            return;
        }
    });

相反,要更详细一些,例如:

var myButtonId = "<%= btnAdd.ClientID %>"; // Now you know what this evaluates to client-side
var btnSelector = "#" + myButtonId;
$(btnSelector).click(function (event) {
        if (beginZipValidation()) {
            //event.preventDefault();

            return;
        }
    });

您是否使用 Firebug 或 Chrome Developer 工具等标准工具进行调试?如果是这样,请在其中抛出一些 console.log("myButtonId: "+ myButtonId); 语句!

关于javascript - js/jquery - event.preventdefault 似乎在 Firefox 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8921303/

相关文章:

javascript - 下拉列表在 Knockout KoGrid 中不起作用

javascript - 如何处理 AngularJS 中的服务器端错误

javascript - 如何在 php 中使用 javaScript 值

javascript - 如何在jquery中验证可排序?

firefox - 是否可以在 WebAssembly 中编写 WebExtension?

javascript 旋转器/无 jQuery

javascript - JQuery 倒计时时钟插件上的前导零

javascript - 如何初始化禁用的 select2

html - 在后退按钮上保留动态更改的 HTML

css - margin : 0 auto; isn't working in Firefox and Safari. 适用于谷歌浏览器