1

以下は、ユーザーを認証するための私のjavascript関数です...ユーザー名/パスワードのテキストボックスが空白で、ログイン失敗時にフォームを保持したいです。

           function authenticate(form)
      {
          if (form.username.value == "Administrator" && form.password.value == "password")
          {
             window.open('OrderList.aspx')/*opens the target page while Id & password matches*/
         }
         else 
         {
             alert("Error Password or Username")
             $("#username").val("")
             $("#password").val("")
             form.????????????('Login.aspx')//so that it stays on the same page wihout reloading the page. 
I tried window.open, but it opens another instance of the form.
             /*displays error message*/
         }
     }
4

3 に答える 3

3

私はあなたがこれを発射していると思いますonclickまたはonSubmit. フォームの送信を防止するにはonSubmit、この関数を使用して結果を返す必要があります。検証が失敗した場合、JavaScript 関数return false;でフォームが送信されないようにする必要があります。

検証に合格したら、return true;何もしないか、フォームを送信し続けたいと仮定します... への呼び出しのみを発行したい場合は、どちらの場合もwindow.open()行う必要があります。return false;

より詳細な説明については、同様の質問に対するこの回答を参照してください。

テキストフィールドから値を削除することに関しては、現在持っているもの (たとえば、以下のコード) が機能します。現在、その影響が見られない唯一の理由は、フォームが送信されたためにページがリロードされていることです。 .

$("#username").val("");
$("#password").val("");
于 2013-04-25T13:11:08.267 に答える
2

ドミトリーが言ったように、次のようなことができます:

$(form).on(
    'submit',
    function(){
        if (passwordsMatchOrWhatever){
            //do whatever a successful submission should
        } else {
            //reset field values if you want to
            return false;
        }
    }
);

フォームが送信されると、'submit' イベントが発生します。上記のコードでは、jQuery を使用して、それが発生したときに実行する関数をアタッチしています。その関数から false を返すと、送信全体がキャンセルされます。

于 2013-04-25T13:17:48.040 に答える
2

onSubmitあなたの関数で処理してくださいreturn false- 何も起こりません。

  function authenticate(form)
      {
          if (form.username.value == "Administrator" && form.password.value == "password")
          {
             window.open('OrderList.aspx')/*opens the target page while Id & password matches*/
         }
         else 
         {
             alert("Error Password or Username")
             $("#username").val("")
             $("#password").val("")
            return false;
         }
     }
于 2013-04-25T13:11:01.510 に答える