这是我目前的脚本。
else if
无效。
$('#groupbyCheckbox').change(function() {
if ($( "#groupbyDropdown" ).prop( "disabled", true )) {
$("#groupbyDropdown").attr('disabled','');
alert('true');
}
else if ($( "#groupbyDropdown" ).prop( "disabled", false )) {
alert();
$("#groupbyDropdown").attr('disabled','disabled');
alert('false');
}
});
additional question.
$('#newCheckBox').change(function(){
$("#dropDown").empty();
var items = [];
$.each(var1, function(key, data) {
items.push('<option value='+key+'>'+varlist+'</option>');
});
$("#dropDown").append(items.join(''));
});
答案 0 :(得分:1)
我认为您要做的是根据是否选中复选框启用/禁用选择
jQuery(function($) {
$('#groupbyCheckbox').change(function() {
$("#groupbyDropdown").prop('disabled', this.checked);
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" id="groupbyCheckbox" />
<select id="groupbyDropdown">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
&#13;
在您的代码中存在多个问题,
if
条件下,您正在使用.prop()
的setter版本,它将始终返回一个jquery对象,因此将始终是真实的答案 1 :(得分:0)
在这两种情况下,您都要设置值而不是获取它。看这里: <击> 撞击>
<击>if ($( "#groupbyDropdown" ).prop( "disabled", true )) {
击> <击> 撞击> 实际设置属性。你想要的是检查它的当前值:
if ($( "#groupbyDropdown" ).prop( "disabled" ) == true) {
或简单地说:
if ($( "#groupbyDropdown" ).prop( "disabled" )) {
同样的原则适用于else if
:
<击> 撞击>
else if ($( "#groupbyDropdown" ).prop( "disabled", false )) {
击> <击> 撞击> 应该是:
else if ($( "#groupbyDropdown" ).prop( "disabled" ) == false) {
或简单地说:
else if (!$( "#groupbyDropdown" ).prop( "disabled" )) {
这就是为什么它永远不会进入else-block - 你总是事先将它设置为true(并且if
和else if
中的整个条件无论如何都会评估为真,所以没有真正的检查发生)。
在此处查看一个简单示例(切换复选框已禁用状态):http://jsfiddle.net/Lohervar/
答案 2 :(得分:0)
试
$('#groupbyCheckbox').change(function() {
var isDisable= $("#groupbyDropdown" ).prop("disabled");
$("#groupbyDropdown" ).prop( "disabled",!isDisable);
});
注意:设置禁用属性$(&#34; #groupbyDropdown&#34;)。prop(&#34;禁用&#34;,true),不返回Boolean
,它总是返回{{ 1}}
使用object