Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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/89.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 如何在单击按钮并按enter键时启动jquery函数_Javascript_Jquery_Forms - Fatal编程技术网

Javascript 如何在单击按钮并按enter键时启动jquery函数

Javascript 如何在单击按钮并按enter键时启动jquery函数,javascript,jquery,forms,Javascript,Jquery,Forms,我有一个函数,它使用Ajax从表单发送一些数据 为了防止表单在没有Ajax的情况下发布,我使用preventDefault()这也会在按下enter时停止表单提交 我如何确保在单击按钮(与现在一样)和按下enter按钮时启动以下功能 jQuery: $("body").on("click",".login-button",function(e){ e.preventDefault(); loginform = $(".login-form").serialize(); $.aj

我有一个函数,它使用Ajax从表单发送一些数据

为了防止表单在没有Ajax的情况下发布,我使用
preventDefault()
这也会在按下
enter
时停止表单提交

我如何确保在单击按钮(与现在一样)和按下
enter
按钮时启动以下功能

jQuery:

$("body").on("click",".login-button",function(e){
e.preventDefault();
    loginform = $(".login-form").serialize();

    $.ajax({
     type:'post',
     url:"includes/inloggen.php",
     data:({loginform: loginform}),
     success:function(data){
         var obj = JSON.parse(data);

         var arrayspot = 0;
         for (var i = 0; i < obj.length; i++) {
             var status = obj[i].status;
             var field = obj[i].field;
             if(status == 'error'){
                    var message = obj[i].message;
                    $( 'input[name="' + field + '"]' ).parent().addClass('invalid-input');
                    var errorveld = $( 'input[name="' + field + '"]' ).parent();
                    $( 'input[name="' + field + '"]' ).parent().next('.inputerror').remove();
                    errorveld.after('<div class="inputerror"><i class="fas fa-arrow-up"></i> ' + message + '</div>');
             }else if(status == 'success'){
                    $( 'input[name="' + field + '"]' ).parent().next('.inputerror').remove();
                    $( 'input[name="' + field + '"]' ).parent().removeClass('invalid-input');
             }
             var arrayspot = parseInt(i);
         }
         if(obj[arrayspot].totalstatus == 'error'){
             $( "#loginresult" ).removeClass('positiveresult');
             $( "#loginresult" ).show().empty().append( obj[arrayspot].totalmessage );
         }else if(obj[arrayspot].totalstatus == 'success'){
             window.location.replace("https://website.nl/new/");
         }
     }
 });
});
$(“body”)。在(“单击”,“登录”按钮)上,函数(e){
e、 预防默认值();
loginform=$(“.login form”).serialize();
$.ajax({
类型:'post',
url:“includes/inloggen.php”,
数据:({loginform:loginform}),
成功:功能(数据){
var obj=JSON.parse(数据);
var-arrayspot=0;
对于(变量i=0;i

我试过复制整个函数,但这次是按enter键启动,但必须有另一种方法,减少代码行数?无需发送双重ajax请求。

当您的控件包含在
中时,您可以免费获得此行为。从使用
serialize()
的代码上下文来看,情况似乎已经如此。因此,您可以简单地修改逻辑,以侦听表单的
submit
事件,而不是单击submit按钮的
按钮。试试这个:

$(“body”)。在(“提交”、“登录表单”上,函数(e){
e、 预防默认值();
loginform=$(this.serialize();
$.ajax({
键入:“post”,
url:“includes/inloggen.php”,
数据:{
loginform:loginform
},
成功:功能(数据){
var obj=JSON.parse(数据);
var-arrayspot=0;
对于(变量i=0;i
还要注意的是,我通过删除
数据
属性周围不必要的
()
并缓存
$('input[name=“”+field+'”]).parent()
选择器稍微整理了一下逻辑


最后,如果响应的MIME类型设置正确,您不需要手动调用
JSON.parse(data)

,感谢您清理代码。但是,在表单内部聚焦输入时按enter键没有任何作用,并且在按下按钮时表单也停止提交。编辑:没关系,我有一个按钮,而不是一个输入类型提交。谢谢,现在可以用了!