如果未选中复选框,请尝试将表单控件属性返回到“已启用”。 所以,对于这个HTML片段:
<div id="post">
<div class="Response">
<label><input type="radio" name="Radio402" value="Y" id="R402Y" onchange='radioChange(this, "402")'>Yes</label>
</div>
<div class="responseDetails">
<div class="Observation">
<label for="Obs402">Observation:</label>
<textarea name="observation" id="Obs402" rows="6" disabled></textarea>
</div>
<div class="DueDate">
<label for="DueDate402">Due date:<br></label>
<input name="DueDate" class="DueDate_in" type="text" id="DueDate402"/>
</div>
<div class="actions">
<label for="pa402">Actions required to correct and/or prevent this observation:</label>
<textarea name="actions" id="pa402" rows="6"></textarea>
</div>?
</div>
</div>
<label for="item">Check me</label>
<input type="checkbox" id="item"/>
我正在应用这个JS
$(document).ready(function()
{
if($("#item").click(function()
{
$("#post").prop("disabled", true);
}));
else
{
$("#post").prop("disabled", false);
};
});
也试过了
$("#item").change(function(){
if (this.checked) {
$("#post").prop("disabled", true);
} else {
$("#post").prop("disabled", false);
}
});
如果CHECKED被禁用,但是如果UNCHECKED它被REMAINS禁用。我究竟做错了什么?我也试过了change(function)()
。我觉得JS没有看到unchecking事件,因此没有返回属性。提前谢谢。
更新:哦,伙计们,请注意,有一个textarea元素,默认情况下保持DISABLED并由其他地方的radiobtn控制。当取消选中框时,此文本字段不会被启用。
答案 0 :(得分:2)
您想使用:checked
$('#item').on('click', function(){
$("#post").prop("disabled", $(this).is(':checked'));
});
答案 1 :(得分:1)
您需要让条件检查是否在元素的更改处理程序(更改事件更改为click事件)内选中了复选框。然后,您需要启用/禁用#post
元素
jQuery(function ($) {
//change event handler
$("#item").change(function () {
//disable/enable input elements
$("#post :input").prop("disabled", !this.checked);
}).change();//set the initial state based on checked state of the checkbox
});
演示:Fiddle