Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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 on(';submit';在单击<;按钮>;时起作用,但在输入字段上按enter键时不起作用_Javascript_Jquery - Fatal编程技术网

Javascript on(';submit';在单击<;按钮>;时起作用,但在输入字段上按enter键时不起作用

Javascript on(';submit';在单击<;按钮>;时起作用,但在输入字段上按enter键时不起作用,javascript,jquery,Javascript,Jquery,我正在使用('submit')来检测表单何时提交,但它只在用户单击submit按钮时起作用 我使用一个标记,这样我就可以在按钮内放置一个图像。我知道我可以使用带有type=“submit”的输入,并将其与图像一起使用CSS,但我想知道另一种jQuery方法。 我在考虑做一个或比较,例如('submit')上的,或者当用户在任何输入字段上按enter键时,但是我应该如何做呢 $('#form').on('submit', function (e) { e.preventDefault()

我正在使用('submit')来检测表单何时提交,但它只在用户单击submit按钮时起作用

我使用一个
标记,这样我就可以在按钮内放置一个图像。我知道我可以使用带有
type=“submit”
的输入,并将其与图像一起使用CSS,但我想知道另一种jQuery方法。
我在考虑做一个
比较,例如('submit')
上的
,或者当用户在任何输入字段上按enter键时,但是我应该如何做呢

$('#form').on('submit', function (e) {

    e.preventDefault();

    var email = $('#email').val();

    function validateEmail(email) { 
        var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return re.test(email);
    } 

});


<form id="form">
    <input id="email" maxlength="64" name="EmailEDIT" type="text" width="100">
    <button id="submitBtn"><img height="30" src="images/fx_demo_button.png" width="74"></button>
</form>
$('#form')。关于('submit',函数(e){
e、 预防默认值();
var email=$('#email').val();
功能验证邮件(电子邮件){
变量re=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)(\'+\”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.[0-9]{1,3}.];
返回重新测试(电子邮件);
} 
});

如果用户在其中一个字段中按enter键,表单将提交。它将触发与按钮相同的事件。如果不发生这种情况,则说明代码中有问题


您评论说您的代码不起作用,但确实起作用:
我只添加了
alert(1);
剩下的就是本主题中的代码

在eventhandler中定义函数时,最好将其分开,以防再次使用该函数(或稍作修改并在两种情况下使用)

如果你在代码中把它分开,这会更有意义,我也认为这是你遇到的问题:

实际上,您只需要一行代码就可以工作。您可以在eventhandler中创建函数(在本例中,这应该被视为不好的做法!),但您从不调用它。请删除函数声明,或在函数下添加此声明:

return validateEmail( email ); // THIS IS BAD PRACTICE AS FIX!

提示:如果您使用的是html5,您可以使用它,浏览器将为您进行验证:

<input type="email" />


您需要插入一个不可见的输入类型submit才能工作。

我们可以看到一些代码吗?共享您的html,jsI无法重现您的问题。顺便说一句,请记住将
type=“submit”
添加到您的按钮。如果firefox忽略单击,否则…:)打开您的javascript控制台,我怀疑有一些红色文本。F12您正在描述我遇到的问题--我不明白为什么在输入上按enter键不会触发submit eventhandler..不是-1,但他有一个submit,所以这不可能是问题所在。而且,在我测试了他的代码之后,它工作了。问题不在于eventhandler,问题在于(在我做了一些挖掘之后)他使用函数Martijn的方式,因为您使用的是特定的浏览器,所以它可能工作正常。我认为maak的解决方案是可行的,但它很笨重。