Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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和ajax提交,以避免多次发送同一表单_Javascript_Php_Jquery_Ajax - Fatal编程技术网

如何检查表单是否已使用javascript和ajax提交,以避免多次发送同一表单

如何检查表单是否已使用javascript和ajax提交,以避免多次发送同一表单,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,表单在javascript或jquery中是一个非常有趣的元素(在本例中) 我的问题是: JS: 现在,我没有得到一个事实,我可以用相同的值多次发送相同的表单,但我没有找到一个解决方案,只发送一次表单,并在完成后立即禁用表单 可能我想得太多了,但例如,json_tidy会发布以下结果: {"fname":"ma","lname":"ma","email":"ciao@ma.com","message":"ciao","honeypot":"","submit":"true"}</body&

表单在javascript或jquery中是一个非常有趣的元素(在本例中)

我的问题是:

JS:

现在,我没有得到一个事实,我可以用相同的值多次发送相同的表单,但我没有找到一个解决方案,只发送一次表单,并在完成后立即禁用表单

可能我想得太多了,但例如,json_tidy会发布以下结果:

{"fname":"ma","lname":"ma","email":"ciao@ma.com","message":"ciao","honeypot":"","submit":"true"}</body>
{“fname”:“ma”,“lname”:“ma”,“email”:ciao@ma.com,“消息”:“ciao”,“蜜罐”:“提交”:“true”}
这对我来说没什么意义

另外,在本例中,我很难找到一个值来标识我将发送多少次表单的计数器

我可以在form.submit(函数(e){}之后,在javascript的和处使用return true和false,但是它只会避免我的js脚本运行并触发php脚本,它在我的表单中:

<form id="contact-form" name="contact-form" action="{{ theme.link }}/FormHandler.php" method="POST">


我想知道过去是否有其他人也有同样的问题

布尔变量怎么样

    // outer scope
    let hasSubmitted = false;
    //...
    form.submit(function(e) {
    if(hasSubmitted)return;
    hasSubmitted = true;
    //...
或:


一个布尔变量怎么样

    // outer scope
    let hasSubmitted = false;
    //...
    form.submit(function(e) {
    if(hasSubmitted)return;
    hasSubmitted = true;
    //...
或:

您可以在发送表单后删除事件处理程序,这样表单就不会再次发送

根据您使用的jQuery版本,您可以使用

$form.submit(false);
或:

另一个选项是禁用提交按钮和输入字段(可选):

const$form=$('#form');
const$message=$(“#message”);
const$submit=$(“#submit”);
$form.submit((e)=>{
e、 预防默认值();
//选项1:删除提交事件处理程序:
$form.off('submit');
$form.on('submit',(e)=>e.preventDefault());
//选项2:禁用提交按钮:
$submit.prop('disabled',true);
//禁用所有输入字段(可选):
$form.find('input,textarea').prop('disabled',true);
//添加反馈信息:
$message.text('Sending message…');
//模拟请求:
设置超时(()=>{
//更新反馈信息:
$message.text('消息已成功发送!');
}, 2000)
});
正文{
字体系列:monospace;
字体大小:16px;
保证金:0;
}
#形式{
宽度:50vw;
保证金:0自动;
}
输入,
文本区,
钮扣{
显示:块;
宽度:100%;
填充:8px;
边缘顶部:8px;
框大小:边框框;
边框:2件纯黑;
背景:透明;
字体系列:monospace;
字体大小:16px;
}
#信息{
边缘顶部:8px;
}

发送
您可以在发送表单后删除事件处理程序,这样表单就不会再次发送

根据您使用的jQuery版本,您可以使用

$form.submit(false);
或:

另一个选项是禁用提交按钮和输入字段(可选):

const$form=$('#form');
const$message=$(“#message”);
const$submit=$(“#submit”);
$form.submit((e)=>{
e、 预防默认值();
//选项1:删除提交事件处理程序:
$form.off('submit');
$form.on('submit',(e)=>e.preventDefault());
//选项2:禁用提交按钮:
$submit.prop('disabled',true);
//禁用所有输入字段(可选):
$form.find('input,textarea').prop('disabled',true);
//添加反馈信息:
$message.text('Sending message…');
//模拟请求:
设置超时(()=>{
//更新反馈信息:
$message.text('消息已成功发送!');
}, 2000)
});
正文{
字体系列:monospace;
字体大小:16px;
保证金:0;
}
#形式{
宽度:50vw;
保证金:0自动;
}
输入,
文本区,
钮扣{
显示:块;
宽度:100%;
填充:8px;
边缘顶部:8px;
框大小:边框框;
边框:2件纯黑;
背景:透明;
字体系列:monospace;
字体大小:16px;
}
#信息{
边缘顶部:8px;
}

发送

实际上,这是一个jquery实体,所以禁用语法如下:submitButton.prop(“disabled”,true);实际上,这是一个jquery实体,所以禁用语法如下:submitButton.prop(“disabled”,true);
$form.submit(false);
$form.off('submit');
$form.on('submit', (e) => e.preventDefault());