jQuery submit()在FF/Chrome中工作(如预期),但在IE/Opera中不工作,你知道为什么吗?

jQuery submit()在FF/Chrome中工作(如预期),但在IE/Opera中不工作,你知道为什么吗?,jquery,html,forms,dom,submit,Jquery,Html,Forms,Dom,Submit,我正在使用一些javascript检查表单字段与可能匹配的数组。Dependent on match user向他们显示一个确认窗口,Dependent on result form提交或用户返回页面。这一过程在Firefox和Chrome中的效果与预期一样,但在IE和Opera中,仍会触发另一种提交方式。有人能建议我如何解决这个问题吗 为了简单起见,脚本对大多数数据进行了裁剪 $(function(){ var check = ["All", "array", "values"];

我正在使用一些javascript检查表单字段与可能匹配的数组。Dependent on match user向他们显示一个确认窗口,Dependent on result form提交或用户返回页面。这一过程在Firefox和Chrome中的效果与预期一样,但在IE和Opera中,仍会触发另一种提交方式。有人能建议我如何解决这个问题吗

为了简单起见,脚本对大多数数据进行了裁剪

$(function(){
    var check = ["All", "array", "values"];
    $('#Next').click(function(){
        $(this).addClass('hit');
        $('#Cancel').attr('disabled', 'disabled');
    });
    $('#Form').bind('submit', function(){
        if($(this).find('.hit').attr('id')=='Next'){
            $('#Next').removeClass('hit');
            var match = $('input[name="WHAT"]', $('#idBothAddressesTable')).val().trim();
            if(match.length==0){
                var postCode = $('input[name="WHAT2"]', $('#idBothAddressesTable')).val().trim();
            }
            var matched = $.inArray(match, check);
            if(matched != -1){
                var ask = confirm("This is the case, proceed or cancel");
                if(ask==true){
                        $.post('dowhat.php',{flag: 1}, function()){
                        $('#Form').unbind('submit').submit();
                    });
                }
                else{
                    ('#Cancel').removeAttr('disabled');
                    return false;
                }
            }
        }
    });
});
表单实际上有两个提交值。除此之外,这是非常基本的,为了简单起见,我们再次删去了大部分内容

<form action="nextpage.php" method="post" id="Form">
    <input type="text" name="WHAT" />
    <input type="text" name="WHAT2" />
    <input type="submit" name="CANCEL" value="Cancel" id="Cancel" />
    <input type="submit" name="NEXT" value="Next" id="Next" />
</form>

在firefox和chrome中,当有人遇到ask==true的条件时,这似乎起作用。$.post继续进行,表单被提交,就好像单击了“下一次”提交一样

但是,在IE和Opera中,会出现$.post,但提交表单时就好像单击了“取消”一样


有人能给我解释一下吗,我似乎找不到解决办法?

您有一个带有两个提交按钮的表单,您正在告诉表单要提交


结果是未定义的:每个浏览器都以自己的方式处理它!因此,我建议您不要告诉表单提交,而是调用需要调用的提交按钮的单击事件。

我不建议在一个表单上使用两个
提交
按钮,但在我看来,这是一种糟糕的做法

无论按哪个按钮,您都在执行
submit
事件,而不会阻止预期的默认行为

另外,使用jQuery,您正在将
bind
submit
绑定到
表单
,但是默认情况下
submit
已经绑定到表单。您可以尝试以下方法,但我仍然强烈建议您重新考虑您的代码,以摆脱第二个
submit
按钮,并将其替换为其他按钮


$(“#Form”)
告诉您有一个id中带有“Form”的表单。能否显示此表单?谢谢您的回答。一旦默认事件被阻止,它确实会像预期的那样工作。然而,我确实决定只将点击事件绑定到所需的元素上,而不是提交,这样我就不需要更改任何内容(这是第三方表单,我想添加一些JS不愿意更改的内容)。您的建议最有意义。我改为点击事件,并使其按预期工作。
$('#Form').bind('submit', function(e){ // don't forget the "e"
        e.preventDefault(); // first line

        // rest of your code follows under preventDefault

});