确定页面加载时的复选框状态,如果选中则禁用最近的输入
Determine checked box status on page load, disable closest input if checked
我有一个提示用户输入的表单,但是每个字段都有一个 'unavailable' 复选框以防数据不可用。
注意复选框的形式:
<input id="un_123" class="unavailable" type="checkbox" name="un_123" value="unavailable">
如果用户select这个,我有下面jquery来禁用字段
$(document).ready(function(){
$('.unavailable').change(function() {
var i = $(this).prev('input'),
d = i.attr('disabled');
i.attr('disabled', !d);
i.val('Unavailable');
});
});
使用复选框将字段切换为禁用状态。
然而,当页面加载时,复选框的状态被保留(如果选中,这将记录在 table 中,并在页面加载时引用以将其加载为选中或未选中,但是该字段显然已加载因为没有被禁用。
我在一个页面上有多个这些字段/复选框对的实例,所以我希望能够检查加载已检查的页面加载,然后禁用最接近它们的字段。
但是没有 .change 触发器并依赖 this
我不确定如何继续?
我试过:
$(document).ready(function(){
if($('.unavailable').is(':checked')){
var i = $('.unavailable').prev('input'),
d = i.attr('disabled');
i.attr('disabled', !d);
i.val('Unavailable');
}
});
但它不起作用(页面加载了禁用复选框旁边的所有输入)
试试这个:
$(document).ready(function(){
$('input.unavailable').change(function() {
var i = $(this).parent().prev('input'),
d = i.attr('disabled');
i.attr('disabled', !d);
i.val('Unavailable');
});
$('input.unavailable:checked').each(function(){
var i = $(this).parent().prev('input');
i.prop('disabled', true);
i.val('Unavailable');});
});
我有一个提示用户输入的表单,但是每个字段都有一个 'unavailable' 复选框以防数据不可用。
注意复选框的形式:
<input id="un_123" class="unavailable" type="checkbox" name="un_123" value="unavailable">
如果用户select这个,我有下面jquery来禁用字段
$(document).ready(function(){
$('.unavailable').change(function() {
var i = $(this).prev('input'),
d = i.attr('disabled');
i.attr('disabled', !d);
i.val('Unavailable');
});
});
使用复选框将字段切换为禁用状态。
然而,当页面加载时,复选框的状态被保留(如果选中,这将记录在 table 中,并在页面加载时引用以将其加载为选中或未选中,但是该字段显然已加载因为没有被禁用。
我在一个页面上有多个这些字段/复选框对的实例,所以我希望能够检查加载已检查的页面加载,然后禁用最接近它们的字段。
但是没有 .change 触发器并依赖 this
我不确定如何继续?
我试过:
$(document).ready(function(){
if($('.unavailable').is(':checked')){
var i = $('.unavailable').prev('input'),
d = i.attr('disabled');
i.attr('disabled', !d);
i.val('Unavailable');
}
});
但它不起作用(页面加载了禁用复选框旁边的所有输入)
试试这个:
$(document).ready(function(){
$('input.unavailable').change(function() {
var i = $(this).parent().prev('input'),
d = i.attr('disabled');
i.attr('disabled', !d);
i.val('Unavailable');
});
$('input.unavailable:checked').each(function(){
var i = $(this).parent().prev('input');
i.prop('disabled', true);
i.val('Unavailable');});
});