如果没有类型="提交"表格不在ENTER上提交元素存在

时间:2014-10-17 21:27:56

标签: javascript jquery html forms

我们使用自定义按钮提交表单。点击事件被分配给.btn-submit's以提交相应的表格。但是,如果<button type="submit">中没有某种类型的<input type="submit"><form>元素,则在用户名或密码文本字段中按Enter键不会提交表单。

如果input字段中没有type="submit"元素,则在<form>字段中按Enter时如何仍然允许用户提交表单?

HTML

<form action="post.php" method="post">
<p><b>Username</b> <input type="text" name="username" style="width: 300px; font-size: 18px"></p>
<p><b>Password</b> <input type="password" name="password" style="width: 300px; font-size: 18px"></p>

<input type="hidden" name="user_login" value="1">
<div class="btn-inline btn-green btn-submit">Log In</div>
</form>

JS

$(document).ready(function()
{
    $('.btn-submit').on('click', function(e)
    {
        $(this).parents('form:first').submit();
    });
});

3 个答案:

答案 0 :(得分:3)

你可以这样做,以便在输入中按下回车键时激活提交按钮

$('form').keypress(function(e){
    var code = e.keyCode || e.which;

    if( code === 13 ) {
        e.preventDefault();
        $( ".btn-submit" ).click();
    };
});

修改

如果在textarea中按下退货,则不会导致点击提交按钮,只会对input类型的text执行此操作。

$('input:text').keypress(function(e){
    var code = e.keyCode || e.which;

    if( code === 13 ) {
        e.preventDefault();
        $( ".btn-submit" ).click();
    };
});

答案 1 :(得分:1)

您需要捕获回车键,最好使用表单上的jQuery委托。我想,只是在表单上定位你的代表并查看输入元素或查看表单的正文。从本质上说,它会说&#34;看看这个顶级元素,触发内部元素的X动作&#34;。你的父母将是形式,内部输入,动作是keydown或keyup

看到这个: jQuery delegate method not working for keydown and keypress

然后在功能测试中检查了什么是按键。如果输入,请提交。如果没有,则返回false。

PS:当我不在手机上时,我可以为你做一个代码段。

答案 2 :(得分:0)

这就是为什么:

  

当用户尝试时,提交事件将发送到元素   提交表格。它只能附加到<form>元素。表格可以   通过点击明确的<input type="submit">提交,   <input type="image"><button type="submit">,或按Enter键   当某些表单元素具有焦点时。

     

根据浏览器的不同,Enter键可能只会生成表单   提交,如果表单只有一个文本字段,或仅在那里   是一个提交按钮。界面不应该依赖于   此密钥的特定行为,除非强制该问题   观察按下Enter键的按键事件。

来源:http://api.jquery.com/submit/