2

我有一个 ASP 经典页面,还有一个登录对话框(使用 jquery 制作)。用户点击登录,对话框弹出并要求输入密码(不需要用户名。小组)。如果他们输入密码并实际单击登录,则一切正常。

但是,如果他们按 Enter 键,则“表单”会以某种方式提交,即使没有表单,并且 url 会更新到http://xxx.xxxx.xxxx.asp?password=whatever并且我的登录代码不会执行(因为未单击登录按钮)。奇怪的是,我只是发现如果用户去http://xxx.xxxx.xxxx.asp?而不是http://xxx.xxxx.xxxx.asp(注意最后的问号),在对话框中按回车键不会做任何事情。

知道为什么会发生这种情况以及如何阻止它吗?

编辑:这是对话框的 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

不要使用 a <input type="submit">,使用:

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

...假设您的页面上只有一种表格。

于 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 回答