2

ASP クラシック ページが登場し、ログイン ダイアログ (jquery を使用して作成) が表示されます。ユーザーがログインをクリックすると、ダイアログがポップアップしてパスワードを要求します (ユーザー名は必要ありません。小グループ)。パスワードを入力して物理的にログインをクリックすると、すべて正常に機能します。

ただし、Enterキーを押すと、フォームがなくても「フォーム」が送信され、URLが更新されhttp://xxx.xxxx.xxxx.asp?password=whatever、ログインコードが実行されません(ログインボタンがクリックされなかったため)。http://xxx.xxxx.xxxx.asp?奇妙なことに、ユーザーが代わりにhttp://xxx.xxxx.xxxx.asp(最後の疑問符に注意してください) に移動した場合、ダイアログ内で Enter キーを押しても何も起こらないことがわかりました。

なぜこれが起こるのか、どうすればそれを止めることができるのでしょうか?

編集: ダイアログの HTML は次のとおりです。

<div id="login-form" title="Log in">
    <p class="validateTips">Please enter your password.</p>
    <label for="password">Password</label>
    <input type="password" name="password" id="password" value="" class="text ui-widget-content ui-corner-all" />
</div>  

そして、ここにjqueryがあります:

$( "#login-form" ).dialog({
      autoOpen: false,
      height: 350,
      width: 350,
      modal: true,
      buttons: {
        "Log In": function() {
          var bValid = true;
          allFields.removeClass( "ui-state-error" );


          if ( password.val() == 'skeet' ) {    
                        setCookie("loggedIn","true",1);
                        alert("Logged in");
            $( this ).dialog( "close" );        
                        location.reload();                      
          }
                    else
                    {
                        alert("Invalid Password");
                    }
        },
        Cancel: function() {
          $( this ).dialog( "close" );
        }
      },
      close: function() {
        allFields.val( "" ).removeClass( "ui-state-error" );
      }
    });
4

3 に答える 3

2

を使用しないでください<input type="submit">:

<input type="button" onclick="document.forms[0].submit()">

...ページにフォームが 1 つしかないとします。

于 2013-07-16T14:23:43.710 に答える
1

入力をフォームの外にネストするのは悪い習慣だと確信しています。ブラウザによって内部的に追加される場合があります。入力の周りにフォームを追加してみてください。

<form onsubmit="return false">
  <div id="login-form" title="Log in">
  ...
  </div>
</form>

ENTER を押してもページは送信されません。

例: http://jsfiddle.net/qXrjD/

問題は、その後フォームを送信できないことですが、問題に直面しない可能性があります.

于 2013-07-16T14:41:20.787 に答える
0

私は過去にこれを onkeydown で無愛想に処理しましたが、今は古いコードを見つけることができませんが、次のようなものです:

<input type="password" onkeydown="EnterHandler();" name="password" id="password" value="" class="text ui-widget-content ui-corner-all" />

次に、このJS

function EnterHandler(){
    if (window.event.keyCode == 13){
        window.event.returnValue =false;
        return null;
    }
}
于 2013-07-16T17:13:47.847 に答える