2

ID="Text1" というテキスト フィールドがあり、Text1 フィールドがフォーカスを失ったときに "validateField()" 関数を起動します (Enter キーが "onkeydown" で押されたかどうかもチェックします)。

例:

<input type=text ID="Text1" onkeydown="wasEnterKey(); " onblur="validateField()" >

問題は、ユーザーがウィンドウを閉じると、このイベントが発生し、それが起こらないようにしたいということです。

validatField 関数で window.onbeforeunload と window.onunload を使用しようとしました:

function validateField() 
{
 if (window.onbeforeunload) { 
    window.open('','_parent','');window.close(); return false;
                            } 
... (other actions follow)
}

どんな助けでも大歓迎です。

4

1 に答える 1

1

ありがとう: @3on と @Champ!

これが私が解決した解決策です。実際のコードは誰かに役立つかもしれないと考えました。再度、感謝します!

<SCRIPT LANGUAGE="JavaScript">
function delayBlur()
{   setTimeout( validatePwd, 100);  }

function closenow()
    {   window.open('','_parent','');window.close(); return false;  }

function validateField() 
{
    var field1 = document.myForm.Text1.value;
    if (Text1 == '')
    {... (other actions follow)}
}
</SCRIPT>
<input type=Text ID="Text1" onkeydown="wasEnterKey(); " onblur="delayBlur()">

これにより、3on と Champ の両方が提案したように、ユーザーが閉じるボタンをクリックしたときにウィンドウを閉じることができます。また、Enter キーでフォームを送信できなくなります。Enter キーを検出し、キーコードをタブ キーに置き換えます。タイムアウトを 100 未満に設定して実験しましたが、散発的に問題が発生しましたが、100 で失敗したことはありません!

于 2012-09-20T22:35:08.530 に答える