我有一个ASP经典页面,并且有一个登录对话框(使用jquery制作)。用户单击登录,弹出对话框并要求输入密码(无需用户名。小组)。如果他们输入密码并实际点击登录,一切正常。
然而,如果他们点击输入,不知何故,“表单”提交,即使没有表单,并且网址更新为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" );
}
});
答案 0 :(得分:2)
请勿使用<input type="submit">
,请使用:
<input type="button" onclick="document.forms[0].submit()">
...假设您的网页上只有一个表单。
答案 1 :(得分:1)
我很确定将输入嵌套在表单之外是不好的做法。您的浏览器可能会在内部为您添加它。 您可以尝试在输入周围添加一个表单吗?
<form onsubmit="return false">
<div id="login-form" title="Log in">
...
</div>
</form>
点击ENTER时,您的页面不应提交。
此处示例:http://jsfiddle.net/qXrjD/
问题是您之后无法提交表单,但您可能不会遇到此问题。
答案 2 :(得分: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;
}
}