jQuery submit()在FF/Chrome中工作(如预期),但在IE/Opera中不工作,你知道为什么吗?
我正在使用一些javascript检查表单字段与可能匹配的数组。Dependent on match user向他们显示一个确认窗口,Dependent on result form提交或用户返回页面。这一过程在Firefox和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"];
$(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
});