如何避免重复提交单一输入表格
How to avoid duplicate submission for single input forms?
我有一个单一的输入表单:
<form id="my_form">
<input id="my_input" type="text" />
</form>
在大多数浏览器中,当用户在这个单一的输入中输入文本并点击'enter'时,表单就被提交了。这很好,但是我想更进一步,这样如果用户键入一些东西而焦点丢失,表单就会被提交。
我目前已经挖掘到jQuery的change
事件如下:
$("my_input").change(function() {
$("my_form").submit();
});
这适用于当我改变输入值并聚焦时的情况,但如果我改变输入值并点击'enter',那么表单将被提交两次(一次为'enter',一次为change
)。
我开始尝试低级别的监听键和管理提交状态,但我认为我应该把它扔给社区,看看是否有人知道更干净的方法。
您还可以将提交事件附加到表单中,而不是使用容易出错的检查。如果该值等于旧值,请勿使用ev.preventDefault()
提交表单。
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;
})
您尝试过模糊事件http://api.jquery.com/blur/
当输入失去焦点时触发
只是对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;
};
})());
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 名称输入的索引
- 如何编写HTML输入的JS内联
- 要求输入在数据列表中
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 如何将输入(type=text)从html表单传递到javascript函数
- 单击jquery清除输入值
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- jQuery自定义验证比较多个输入的序列
- Sails.js:同时发布文本输入和一个文件
- 动态输入字段不会随表单一起开机自检
- 检查特定的文件输入是否与使用PHP的表单一起提交
- 如何使所有的输入字段(与100+输入字段已经存在)在单一形式作为“需要”
- 如何避免重复提交单一输入表格
- 将不同的值限制为单一输入类型
- 作为表单一部分的输入字段打破了我的ASP.网络应用程序
- JavaScript加法,减法,乘法从一个单一的输入框