私はいくつかの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;
}
}
}
});
});
フォームには実際には 2 つの送信値があります。それ以外は非常に基本的なものですが、単純化するために大部分を削除しました。
<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 が発生しますが、「CANCEL」がクリックされたかのようにフォームが送信されます。
誰かが私にこれを説明できますか?解決策が見つからないようです?