【发布时间】:2020-10-10 10:03:43
【问题描述】:
我有以下html表单:
<form id="searchForm" action="/pages/index" accept-charset="UTF-8" method="get">
<input id="toValidate" type="text" name="search_form[mixed]"></div>
<input id="toValidate" type="text" name="search_form[first_name]"></div>
<select name="search_form[state]">
<option selected="selected" value="All">All</option>
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="WY">Wyoming</option>
</select>
<input type="submit" name="commit" value="SEARCH" id="submit" data-disable-with="SEARCH">
</form>
我想让用户至少输入一个输入字段。我认为他们这样做的方式是使用以下 Javascript 代码:
function checkFields(form) {
var inputs = form.find('toValidate').not('[type="submit"],[type="button"],[type="reset"]');
var filled = inputs.filter(function(){
return $.trim($(this).val()).length > 0;
});
if(filled.length === 0) {
return false;
}
return true;
}
$(function(){
$('#searchForm').on('submit',function(e){
var oneFilled = checkFields($(this));
if (oneFilled) {
alert('At least ONE field filled!');
} else {
e.preventDefault();
if (confirm('NO FIELDS FILLED OUT!')){
$('#submit').disabled = false;
}else{
$('#submit').disabled = false;
}
}
});
});
preventDefault() 函数禁用了提交按钮,但是一旦我提醒用户,我就无法再次重新启用该按钮。不过这很有趣,因为当我将代码 $('#submit').disabled = false; 粘贴到控制台上时,它会重新启用该按钮。那我应该怎么做才能重新启用 JS 代码中的按钮呢?
从用户的角度来看:
当 preventDefault();它被称为按钮被禁用,然后,一旦用户接受确认窗口,她就无法再次提交表单,因为按钮被禁用。在接受确认窗口并且用户可以单击“搜索”按钮后,如何使该按钮再次启用。
谢谢。
【问题讨论】:
-
您可以在将提交表单的表单元素上调用“submit”。
-
e.preventDefault();只是禁用事件的默认行为,在submit事件的情况下,它将阻止浏览器窗口在表单提交时重新加载,它与禁用/启用提交按钮无关。您的代码中还有其他问题需要首先解决。例如,您对两个文本input元素使用相同的id- id 应该是唯一的。同样在checkFields函数内部,form.find('toValidate')不应该是form.find('#toValidate')? -
好吧,当 preventDefault();它被称为按钮被禁用,然后,一旦用户接受确认窗口,她就无法再次尝试提交表单,因为按钮被禁用。我怎样才能使按钮在确认窗口被接受后再次启用。谢谢。
-
按钮本身未被禁用。由于
confirm对话框,您无法单击任何表单元素或 UI 上的任何其他位置。
标签: javascript