如果未选择任何选择器选项,则禁用“提交”按钮
Disable Submit button if none of selector options is selected
我想在只包含选择下拉列表的搜索表单上禁用"提交"按钮。这里有几个类似的问题,但我大多数都涉及领域。如果三个特定的下拉字段中的三个都为空,那么最接近我的情况是禁用提交按钮。我修改了JSFiddle中提供的解决方案,使其具有一个空选项,并使其发挥了作用——但仅在JSFiddl中,而不是在我的页面上。
我使用与建议答案相同的代码(仅更改ID):
$('#submit').attr('disabled','disabled');
$('select').change(function(){
if ( $(this).hasClass('require_one') ){
$('#submit').removeAttr('disabled');
}
});
$('#submit').click(function() {
$('#searchform').submit();
});
在包含jquery.js(v.1.9.1)之后,我添加了上面的代码。我动态生成表单,但在JSFiddle中,我使用的正是页面源中的内容:http://jsfiddle.net/cheeseus/d5xz6aw8/8/
我不知道为什么我不能把它放在实际的页面上,希望那些更有知识的人能帮助解决这个问题。
如果可能的话,如果所有三个选择都再次设置为空值,我还希望再次禁用"提交"按钮。
我通常不喜欢使用ID(3)作为CSS选择器,因为文档上只能有一个具有该名称的ID选择器,而可能已经有另一个元素具有相同的ID。不如使用类层次结构来定位按钮元素?在任何情况下,每次你在空的东西上选择什么时,你都需要重新检查计数:
var $submitButton=$('.selector .btn');
var $selectors=$('.selector select.require_one');
$submitButton.attr('disabled','disabled');
$('.selector select.require_one').change(function(){
var $empty=$selectors.filter(function() { return this.value == ""; });
if ( $selectors.filter(function() { return this.value == ""; }).length == $selectors.length ){
$submitButton.attr('disabled','disabled');
} else
{
$submitButton.removeAttr('disabled');
}
});
$submitButton.click(function() {
$('#searchform').submit();
});
JSFiddle代码此处
您可以使用一个简单的计数来查看是否应该显示按钮。这是jQuery代码。
var count = 0;
$('.require_one').change(function() {
count++;
if (count >= 3) {
$('#submit').removeAttr('disabled');
}
});
$('#submit').attr('disabled','disabled');
我认为这是因为您没有检查文档是否准备好。我添加了一些改进:
-
将jquery对象缓存在变量中,可以使您的代码更快(您不需要在每次选择发生更改时都查找它)。
-
使用了推荐的绑定事件的方式-"on"功能
-
"disabled"是属性而不是属性,jQuery有专用的方法来使用
-
在select change-check all select时,如果有任何未选中的选项,则将其设置为-set prop disabled为true,否则设置为false。
-
不是在初始化时禁用提交,而是在选择被更改时触发相同的操作(如果在所有选择初始状态下都选择了选项,则不会禁用)。
$(document).ready(function () {
var $submit = $('#submit');
var $selects = $('select.require_one');
$submit.on("click", function() {
$('#searchform').submit();
});
$selects
.on("change", function(){
var $not_selected = $selects.filter(function() {
return !$(this).val();
});
$submit.prop('disabled', $not_selected.length ? true : false);
})
.first()
.triggerHandler('change');
});
- 带有验证和隐藏字段值的提交按钮
- 如何在 API 调用后和 if 语句中启用提交按钮
- 提交按钮,该按钮位于使用 Excel VBA 的 Javascript 中
- 如何使用提交按钮搜索表中的记录
- 在单击按钮前后禁用提交按钮
- 在表单完成并确认密码之前,请禁用提交按钮
- 如何使用Java脚本创建提交按钮's的拖放功能
- 如何在单击“提交”按钮时为“新建”窗口编写JavaScript,用“确定”和“取消”显示注册信息
- 提交按钮通过JQuery和JavaScript函数所做的更改不会持续
- 从输入时提交到jQuery,无需提交按钮,无需表单操作
- onclick提交按钮JSP
- 通过提交按钮传递值
- 如果ng单击附加到提交按钮,则表单未验证
- 如何在Razor MVC 5.2.3 Ajax中使用多个提交按钮
- 使用提交按钮隐藏未选中的单选按钮
- Ruby/JS如何在提交按钮后重新加载页面
- JavaScript表单提交没有't fire asp服务器端点击功能的提交按钮
- 使用javascript后,提交按钮不起作用
- 如何使用jQuery/Ajax响应特定的提交按钮
- 表单中的提交按钮在 PHP 打印中不起作用