Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在'上提交表格;输入';用jQuery?_Javascript_Jquery_Html_Webkit_Forms - Fatal编程技术网

Javascript 在'上提交表格;输入';用jQuery?

Javascript 在'上提交表格;输入';用jQuery?,javascript,jquery,html,webkit,forms,Javascript,Jquery,Html,Webkit,Forms,我有一个bog标准登录表单——一个电子邮件文本字段、一个密码字段和一个使用HTML/jQuery的AIR项目的提交按钮。当我在表单上按Enter键时,整个表单的内容消失,但表单没有提交。有人知道这是一个Webkit问题(AdobeAIR使用Webkit for HTML),还是我把事情搞砸了 我试过: $('.input').keypress(function (e) { if (e.which == 13) { $('form#login').submit(); } });

我有一个bog标准登录表单——一个电子邮件文本字段、一个密码字段和一个使用HTML/jQuery的AIR项目的提交按钮。当我在表单上按Enter键时,整个表单的内容消失,但表单没有提交。有人知道这是一个Webkit问题(AdobeAIR使用Webkit for HTML),还是我把事情搞砸了

我试过:

$('.input').keypress(function (e) {
  if (e.which == 13) {
    $('form#login').submit();
  }
});

但这既没有停止清算行为,也没有提交表单。没有与表单相关的操作-这可能是问题所在吗?我可以在操作中使用javascript函数吗?

返回
false
以防止击键继续。

返回
false
以防止击键继续。

除了Jason Cohen提到的返回false之外。您可能还必须防止出现默认情况

e.preventDefault();

除了Jason Cohen提到的返回false之外。您可能还必须防止出现默认情况

e.preventDefault();

是否有任何理由必须钩住并测试enter键

你不能简单地添加一个

<input type="submit" /> 

并在按下enter键时自然提交?您甚至可以钩住表单的
onsubmit
操作,并在那里调用验证函数(如果需要的话)


您甚至可以使用
onsubmit
作为测试来查看表单是否正在提交,但如果调用
form.submit()

是否有任何原因需要挂起并测试enter键,则该测试将无法工作

你不能简单地添加一个

<input type="submit" /> 

并在按下enter键时自然提交?您甚至可以钩住表单的
onsubmit
操作,并在那里调用验证函数(如果需要的话)


您甚至可以使用
onsubmit
作为测试来查看表单是否正在提交,但如果调用
form.submit()

不知道它是否有用,但您可以尝试模拟单击提交按钮,而不是直接提交表单。我在生产中使用了以下代码,并且工作正常:

    $('.input').keypress(function(e) {
        if(e.which == 13) {
            jQuery(this).blur();
            jQuery('#submit').focus().click();
        }
    });

注意:jQuery(“#submit”).focus()在按下enter键时使按钮具有动画效果。

不知道是否有帮助,但您可以尝试模拟提交按钮单击,而不是直接提交表单。我在生产中使用了以下代码,并且工作正常:

    $('.input').keypress(function(e) {
        if(e.which == 13) {
            jQuery(this).blur();
            jQuery('#submit').focus().click();
        }
    });

注意:jQuery(“#submit”).focus()在按下enter键时使按钮具有动画效果。

此外,为了保持可访问性,您应该使用它来确定键码:

c = e.which ? e.which : e.keyCode;

if (c == 13) ...

此外,为了保持可访问性,您应该使用此选项来确定您的密钥码:

c = e.which ? e.which : e.keyCode;

if (c == 13) ...
我现在用

$("form").submit(function(event){
...
}
起初,我在submit按钮中添加了一个eventhandler,这给我带来了一个错误。

我现在使用它

$("form").submit(function(event){
...
}

起初,我向submit按钮添加了一个eventhandler,这给我带来了一个错误。

您也可以简单地向页面中的表单代码添加
onsubmit=“return false”
,以防止出现默认行为

然后通过javascript文件中的jQuery将表单的
提交
事件钩住(
.bind
.live

下面是帮助您的示例代码:

HTML

<form id="search_form" onsubmit="return false">
   <input type="text" id="search_field"/>
   <input type="button" id="search_btn" value="SEARCH"/>
</form>

从2011年4月13日起,Firefox 4.0和jQuery 1.4.3也可以使用,您也可以简单地在页面的表单代码中添加
onsubmit=“return false”
,以防止出现默认行为

然后通过javascript文件中的jQuery将表单的
提交
事件钩住(
.bind
.live

下面是帮助您的示例代码:

HTML

<form id="search_form" onsubmit="return false">
   <input type="text" id="search_field"/>
   <input type="button" id="search_btn" value="SEARCH"/>
</form>
从2011年4月13日起,Firefox 4.0和jQuery 1.4.3都可以使用,试试这个:

var form = document.formname;

if($(form).length > 0)
{
    $(form).keypress(function (e){
        code = e.keyCode ? e.keyCode : e.which;
        if(code.toString() == 13) 
        {
             formsubmit();
        }
    })
}
试试这个:

var form = document.formname;

if($(form).length > 0)
{
    $(form).keypress(function (e){
        code = e.keyCode ? e.keyCode : e.which;
        if(code.toString() == 13) 
        {
             formsubmit();
        }
    })
}
$('.input')。按键(功能(e){
如果(e.which==13){
$('form#login').submit();
返回false;//
$('.input')。按键(函数(e){
如果(e.which==13){
$('form#login').submit();

return false;//以下是一种作为JQuery插件执行此操作的方法(如果您想重新使用该功能):

现在,如果您想用这种类型的功能装饰一个
元素,它非常简单:

$('#your-input-id').onEnterKey(
    function() {
        // Do stuff here
    } );

作为JQuery插件,这里有一种方法可以做到这一点(如果您想重用该功能):

现在,如果您想用这种类型的功能装饰一个
元素,它非常简单:

$('#your-input-id').onEnterKey(
    function() {
        // Do stuff here
    } );

只需添加即可轻松实现。您只需创建一个表单,然后隐藏“提交”按钮:

例如:

<form action="submit.php" method="post">
Name : <input type="text" name="test">
<input type="submit" style="display: none;">
</form>

姓名:

只需添加即可轻松实现。您只需创建一个表单,然后隐藏“提交”按钮:

例如:

<form action="submit.php" method="post">
Name : <input type="text" name="test">
<input type="submit" style="display: none;">
</form>

姓名:
这是我的代码:

  $("#txtMessage").on( "keypress", function(event) {
    if (event.which == 13 && !event.shiftKey) {
        event.preventDefault();
        $("#frSendMessage").submit();
    }
    });
这是我的代码:

  $("#txtMessage").on( "keypress", function(event) {
    if (event.which == 13 && !event.shiftKey) {
        event.preventDefault();
        $("#frSendMessage").submit();
    }
    });
在HTML代码中:

<form action="POST" onsubmit="ajax_submit();return false;">
    <b>First Name:</b> <input type="text" name="firstname" id="firstname">
    <br>
    <b>Last Name:</b> <input type="text" name="lastname" id="lastname">
    <br>
    <input type="submit" name="send" onclick="ajax_submit();">
</form>
在HTML代码中:

<form action="POST" onsubmit="ajax_submit();return false;">
    <b>First Name:</b> <input type="text" name="firstname" id="firstname">
    <br>
    <b>Last Name:</b> <input type="text" name="lastname" id="lastname">
    <br>
    <input type="submit" name="send" onclick="ajax_submit();">
</form>

我今天发现在按下Enter键时不会触发keypress事件,因此您可能需要切换到keydown()或keyup()

我的测试脚本:

        $('.module input').keydown(function (e) {
            var keyCode = e.which;
            console.log("keydown ("+keyCode+")")
            if (keyCode == 13) {
                console.log("enter");
                return false;
            }
        });
        $('.module input').keyup(function (e) {
            var keyCode = e.which;
            console.log("keyup ("+keyCode+")")
            if (keyCode == 13) {
                console.log("enter");
                return false;
            }
        });
        $('.module input').keypress(function (e) {
            var keyCode = e.which;
            console.log("keypress ("+keyCode+")");
            if (keyCode == 13) {
                console.log("Enter");
                return false;
            }
        });
在键盘上键入“A输入B”时控制台中的输出:

keydown (65)
keypress (97)
keyup (65)

keydown (13)
enter
keyup (13)
enter

keydown (66)
keypress (98)
keyup (66)
您可以看到,在第二个序列中,缺少“keypress”,但按下/释放了keydown和keyup寄存器代码“13”。 根据:


在服务器2012 R2上的IE11和FF61上进行了测试,我今天发现在按Enter键时不会触发keypress事件,因此您可能需要切换到keydown()或keyup()

我的测试脚本:

        $('.module input').keydown(function (e) {
            var keyCode = e.which;
            console.log("keydown ("+keyCode+")")
            if (keyCode == 13) {
                console.log("enter");
                return false;
            }
        });
        $('.module input').keyup(function (e) {
            var keyCode = e.which;
            console.log("keyup ("+keyCode+")")
            if (keyCode == 13) {
                console.log("enter");
                return false;
            }
        });
        $('.module input').keypress(function (e) {
            var keyCode = e.which;
            console.log("keypress ("+keyCode+")");
            if (keyCode == 13) {
                console.log("Enter");
                return false;
            }
        });
在键盘上键入“A输入B”时控制台中的输出:

keydown (65)
keypress (97)
keyup (65)

keydown (13)
enter
keyup (13)
enter

keydown (66)
keypress (98)
keyup (66)
您可以看到,在第二个序列中,缺少“keypress”,但按下/释放了keydown和keyup寄存器代码“13”。 根据:

在服务器2012 R2上的IE11和FF61上进行了测试,因为可能会很晚 但您可以在html中添加以下行:-

<input onkeyup="submitForm(event)" oninput="addTextName(this)" type="text" id="name-val">
}

keycode 13表示输入,因为可能会迟到 但您可以在html中添加以下行:-

<input onkeyup="submitForm(event)" oninput="addTextName(this)" type="text" id="name-val">
}


keycode 13表示完全同意。我的首选是使用浏览器(inp)的本机功能