使用jQuery submit()按下enter时提交表单

时间:2011-02-19 10:05:50

标签: javascript jquery

我有一个处理程序来捕获在身份验证功能的上下文中的一组输入中“输入”的事件,但是当我按下该键时它不起作用。代码如下:

$('#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>

4 个答案:

答案 0 :(得分:3)

所以你的目标是在按下 Enter 时提交表格,对吗?

实现此目的的最简单方法是使用提交按钮

<input type="submit" value="Login" />

而不是链接。然后该事件由浏览器处理。

DEMO

如果您希望因样式而拥有链接,则可以使用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。