Javascript 检查页面中的所有下拉列表是否都有选定的选项
只有在所有问题都已回答的情况下,才需要启用页面上的按钮,我有5个下拉列表,需要确保用户在进入下一步之前回答了所有问题 尝试在每次更改中重复每个选择,但无法使其工作,错误的JS知识Javascript 检查页面中的所有下拉列表是否都有选定的选项,javascript,jquery,Javascript,Jquery,只有在所有问题都已回答的情况下,才需要启用页面上的按钮,我有5个下拉列表,需要确保用户在进入下一步之前回答了所有问题 尝试在每次更改中重复每个选择,但无法使其工作,错误的JS知识 arr = $('.select1, .select2, .select3, .select4, .select5') $('.select1, .select2, .select3, .select4, .select5').on('change', function(event) { $.each(a
arr = $('.select1, .select2, .select3, .select4, .select5')
$('.select1, .select2, .select3, .select4, .select5').on('change', function(event) {
$.each(arr, function(index, val) {
/* tried here something */
});
});
我想知道是否有更好的方法可以做到这一点,比如在一行中:select.selected.size=5
感谢您提供的任何帮助—想法、解决方案、链接等。您可以尝试以下内容
selects = $('[class^=select]');
selects.on('change', function(event) {
if(selects.length == $('[class^=select]:selected]').length)
{
}
});
试一试
arr.filter('option[value!=”“]:selected')。长度
过滤下拉列表中选择的选项,其值不是”
,并获取其长度在“检查”功能中执行检查:
function checkValid($selects) {
var check = true;
$selects.each(function(){
if ($(this).val() == "") {
check = false;
}
});
return check;
}
// usage example :
var ok = checkValid( $('.select1, .select2, .select3, .select4, .select5') );
$('#myButton').prop('enabled', ok);
下拉列表将始终具有选定的选项 您应该检查所选选项是否不是默认选项 例如,在提交中。。获取所选项目的值
$.each($('.select1, .select2, .select3, .select4, .select5'), function(ind,val){
if($(this).find('option:selected').val() !== 1)){
return false;
}
});
我有一些时间,所以我想我会提供一个潜在的解决方案;给定如下所示的HTML:
<select name="test1">
<option value="-1">Please select</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<!-- HTML repeated as much as you like -->
可以这样称呼:
$('select').on('change', function(){
console.log($('select').allSelected());
});
更新了上述内容,以便将一个值传递到插件中,使其被视为无效选择(在演示中,我任意使用了3
),但如果用户不提供参数,则默认值为-1
。在这种情况下,如果任何元素的值等于noChoiceValue
(因为缺少更好的名称),插件将返回false
:
(function($){
$.fn.allSelected = function(opts){
var s = $.extend({
'noChoiceValue' : -1
}, opts);
return this.filter(function(){
return this.value !== s.noChoiceValue.toString();
}).length >= this.length;
};
})(jQuery);
$('select').on('change', function(){
console.log($('select').allSelected({
'noChoiceValue' : 3
}));
});
参考资料:
- 可以为页面上的下拉列表定义一个类,例如:
<select id='select1' class='dropdownClass'>
<option value='value1'>value1</option>;
<!-- etc -->
<select id='select2' class='dropdownClass'>
<option value='value1'>value1</option>;
<!-- etc -->
确保按钮最初处于禁用状态:
<button id='buttonId' disabled='true'>Submit</button>
提交
unselected选项的值是多少?如果unselected没有值Select one
可能重复:@feeela,这是一个下拉列表中的多个选择,而不是多个下拉列表。然后您需要一个案例,对于每个选择,检查所选值。。需要更多的信息:/对于我在JS中如此无能,我期待着这样的答案:)谢谢。多亏了这里的其他开发人员,我才能够让它正常工作。[value!=“”]
正是我想要的-谢谢!
(function($){
$.fn.allSelected = function(opts){
var s = $.extend({
'noChoiceValue' : -1
}, opts);
return this.filter(function(){
return this.value !== s.noChoiceValue.toString();
}).length >= this.length;
};
})(jQuery);
$('select').on('change', function(){
console.log($('select').allSelected({
'noChoiceValue' : 3
}));
});
arr = $('.select1, .select2, .select3, .select4, .select5')
$('.select1, .select2, .select3, .select4, .select5').on('change', function(event) {
var n = '0';
$.each(arr, function(index, val) {
if( $(this).find('option:selected').index() == '0' ){
//first option [default] is selected
var n = (n+1);
}
});
if ( n == (arr.length+1) ){
//all select has values
}
});
<select id='select1' class='dropdownClass'>
<option value='value1'>value1</option>;
<!-- etc -->
<select id='select2' class='dropdownClass'>
<option value='value1'>value1</option>;
<!-- etc -->
<body onload='setDropdown()'>
<!-- -->
</body>
<script>
function setDropdown(){
document.getElementById('select1').selectedIndex = -1
document.getElementById('select2').selectedIndex = -1
//etc
}
</script>
$('.dropdownClass').change(function(){
if ($('.dropdownClass>option:selected').length == ($('.dropdownClass').length)){
document.getElementById('buttonId').disabled = false;
}
});
<button id='buttonId' disabled='true'>Submit</button>