2012-12-05 80 views
0

我正在使用DropDownLists和複選框等工作在asp.net mvc3應用程序上。根據下拉列表禁用複選框

我寫了一個javascript禁用複選框,如果選擇了定義的下拉列表中選擇:

$(function() { 
    $('#dropdownlistId').change(function() { 
     if (this.value == '1st option') { 
      $('#checkboxId').attr('disabled', disabled); 
     } else { 
      $('#checkboxId').removeAttr('disabled', disabled); 
     } 
    }); 
}); 

這工作得很好,但腳本只在變化的下拉列表中反應

因此,如果'第一選項'位於下拉列表的頂部,並且被自動選爲默認選項,則該腳本不會禁用該複選框。只有當用戶選擇其他選項,並選擇「選項1」再次...

請幫我:)

PS:劇本還,如果我用我的鍵盤來切換下拉列表選擇不工作而不是我的鼠標

因此,這將是非常善良,如果你能幫助我提高了劇本,因爲我真的做不到的javascript:/

+0

請包括HTML或更好,但做出的jsfiddle。 –

回答

1
$(function() { 
    var $cb = $('#checkboxId'); 
    $('#dropdownlistId').change(function() { 
     if (this.value == '1st option') { 
      $cb.prop('disabled', true); 
     } else { 
      $cb.prop('disabled', false); 
     } 
    }).trigger('change'); 
}); 

添加halnderl後觸發更改事件的區別。關於第二個問題 - 使用鍵盤時,選擇將失去焦點('模糊')時,將觸發「更改」事件。

+0

thx,我稍微修改了你的代碼,它解決了我的問題:) – roxor

1

你可以做這樣的事情:

function setCheckBox() { 
    if (this.value == '1st option') { 
     $('#checkboxId').attr('disabled', disabled); 
     } else { 
     $('#checkboxId').removeAttr('disabled', disabled); 
     } 
} 
$(function() { 
    setCheckBox();//do this on load.. 
    $('#dropdownlistId').change(function() { 
     setCheckBox();//and on change 
    }); 
}); 
0

當您定義CheckBox控件時,默認情況下使用disabled屬性將其禁用。這樣它就會被禁用了,並且不需要添加更多的JavaScript來禁用它。

這將是這個樣子:

@Html.CheckBoxFor(model => model.IsCheckBox, new { @disabled = "true" }) 
0

您的代碼似乎有點不正確取決於你的需要,因爲你的呼籲是下拉列表的變化禁用功能,你需要將它寫的document.ready像這樣

$(document).ready(function() {if(document.getElementById("dropdownlistId").value="1stoption") 
{ 
document.getElementById('checkboxId').style.visibility = 'hidden'; 
} 
else 
{//do something whatever you wish here in else condition 

} 
} 

希望它有幫助!

0
$(function() { 
    var $cb = $('#checkboxId'); 
    $('#dropdownlistId').change(function() { 
     if (this.value == '1st option') { 
      $cb.attr('disabled', disabled); 
     } else { 
      $cb.removeAttr('disabled', disabled); 
     } 
    }).trigger('change'); 
}); 

的作品就像一個魅力現在 感謝你們