我有一个处理程序来捕获在身份验证功能的上下文中的一组输入中“输入”的事件,但是当我按下该键时它不起作用。代码如下:
$('#login form').submit(function(e) { login(e); });
function login(e)
{
e.preventDefault();
var l = $('#logo a').attr('href');
var name = $('#login input[name="login_username"]').val();
var pass = $('#login input[name="login_password"]').val();
$.ajax({
type: 'POST',
url: l+'user/login',
data: 'username='+name+'&password='+pass,
cache: false,
dataType: 'json',
success: function(response)
{
if (response.status == true)
window.location = response.redirect;
else
jQuery.facebox('<p class="facebox-notice">'+response.error+'</p>');
}
});
}
然而,它对我出于同样目的的按钮有效:
$('#dologin').click(function(e) { login(e); });
任何想法为什么?干杯!
修改
标记如下:
<div id="login">
<form action="" method="post">
<input type="text" name="login_username" />
<input type="password" name="login_password" />
<a href="" id="dologin">LOGIN</a>
</form>
</div>
答案 0 :(得分:3)
所以你的目标是在按下 Enter 时提交表格,对吗?
实现此目的的最简单方法是使用提交按钮
<input type="submit" value="Login" />
而不是链接。然后该事件由浏览器处理。
如果您希望因样式而拥有链接,则可以使用CSS设置按钮的样式并make it look like a link。
答案 1 :(得分:1)
<强>更新强>
您需要的是<input type=submit>
。但是,您可以选择将其隐藏在屏幕外。这样你就可以免费获得enter
上的提交。
请注意,虽然您无法隐藏带有display:none
更改可见性的提交,因为它会变为非活动元素,并且无法在大多数浏览器上运行。
答案 2 :(得分:1)
尝试在表单中加入隐藏提交按钮。
<强>更新强> 好吧,这适用于Firefox,但不适用于Chrome。我想,IE也不会处理它。
好吧,你可以采用脚本方式http://jsfiddle.net/GqHzZ/。在触发提交功能的所有事件字段上添加一个按键处理程序,如下所示:
$(document).ready(function(){
$('#login form input').keypress(function(e) { if(e.which == '13')login(e); });
答案 3 :(得分:1)
使用基于webkit的浏览器(Chrome,Safari),我发现尝试使用锚标记中的空白href元素进行某些“点击”事件,提交和其他内容将无效。
<a href="" id="dologin">LOGIN</a>
原因很简单,你的href是空白的。
如果您将其设置为几乎任何内容,例如#和返回false ,则jQuery ... webkit将像Firefox和其他浏览器一样工作。< / p>
返回错误部分,顺便说一下......阻止了“default action”,它将“跟随”#link。
<强> HTML 强>
<a href="#" id="submitbutton">LOGIN</a>
<强>的jQuery 强>
<script>
$(document).ready(function() {
$('#submitbutton').click(function() {
$('#someForm').submit();
return false;
});
});
</script>
在移动网络套件上,甚至更严格地执行(似乎)iPhone,iPad,Android。