我正在使用一些 javascript 来检查表单字段与可能匹配的数组。取决于匹配用户是否显示确认窗口,并且取决于结果表单是否提交或用户返回到页面。此过程在 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 继续并提交表单,就像单击“NEXT”提交一样。
然而,在 IE 和 Opera 中,会出现 $.post,但提交表单时就像点击了“取消”一样。
谁能给我解释一下,我似乎找不到解决方案?