Javascript 如何避免单输入表单重复提交?
我有一个单一的输入表单:Javascript 如何避免单输入表单重复提交?,javascript,jquery,html,ruby-on-rails,forms,Javascript,Jquery,Html,Ruby On Rails,Forms,我有一个单一的输入表单: <form id="my_form"> <input id="my_input" type="text" /> </form> 这适用于我更改输入值并调出焦点的情况,但如果我更改输入值并点击“回车”,则表单将提交两次(一次用于“回车”,一次用于更改) 我开始走低层监听键和管理提交状态的道路,但我想我会把它扔给社区,看看是否有人知道一种更干净的方法。您也可以将提交事件附加到表单,而不是干扰容易出错的检查。如果该值等于旧值,请不要使
<form id="my_form">
<input id="my_input" type="text" />
</form>
这适用于我更改输入值并调出焦点的情况,但如果我更改输入值并点击“回车”,则表单将提交两次(一次用于“回车”,一次用于更改
)
我开始走低层监听键和管理提交状态的道路,但我想我会把它扔给社区,看看是否有人知道一种更干净的方法。您也可以将提交事件附加到表单,而不是干扰容易出错的检查。如果该值等于旧值,请不要使用
ev.preventDefault()
提交表单
你试过模糊事件吗
这将在输入失去焦点时触发。只是对Rob W解决方案的改进
$('#my_form').submit((function () {
//Enclose variables as to not pollute the global namespace
var oldValue,
input = $('#my_input'); //cache your input
//Same concept as Rob W's solution
return function (e) {
var newValue = input.val();
if(newValue === oldValue) {
e.preventDefault();
}
oldValue = newValue;
};
})());
非常干净的解决方案,我建议用一些旗子控制,但你的要好得多
var oldvalue = "";
$("#my_form").submit(function(ev){
var newvalue = $("#my_input", this).val();
if(newvalue == oldvalue) ev.preventDefault(); //Same value, cancel submission
else oldvalue = newvalue;
})
$('#my_form').submit((function () {
//Enclose variables as to not pollute the global namespace
var oldValue,
input = $('#my_input'); //cache your input
//Same concept as Rob W's solution
return function (e) {
var newValue = input.val();
if(newValue === oldValue) {
e.preventDefault();
}
oldValue = newValue;
};
})());