Javascript 如何在单击按钮并按enter键时启动jquery函数
我有一个函数,它使用Ajax从表单发送一些数据 为了防止表单在没有Ajax的情况下发布,我使用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
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键没有任何作用,并且在按下按钮时表单也停止提交。编辑:没关系,我有一个按钮,而不是一个输入类型提交。谢谢,现在可以用了!