jquery复选框仅在第一次加载时触发
jquery checkbox triggering on first load only
我有一个单选按钮,它控制选中的属性,并根据您选中的单选按钮禁用/启用复选框。
问题出在负载上。我检查了单选按钮2。则所有复选框都被启用。如果我选中单选按钮1,则必须禁用第一个2复选框,第三个复选框应保持启用状态,并且必须选中它。
如果你重复这个场景。检查单选按钮2运行顺利,但如果您签回单选按钮1,则最后一个选中的框在其属性上标记为已选中,但该框尚未选中。
基本上,这需要进行视觉检查,以便发送数据。
HTML:
<span><input type="radio" name="attendee" id="guest1" value="1">1</span> <span><input type="radio" name="attendee" id="guest2" value="2" checked="checked">2</span><br>
<span class="wpcf7-form-control wpcf7-checkbox wpcf7-validates-as-required JPCCheck"><span class="wpcf7-list-item first"><input type="checkbox" name="attending2[]" value="14 september - Welcome Dinner"> <span class="wpcf7-list-item-label">14 september - Welcome Dinner</span></span><span class="wpcf7-list-item"><input type="checkbox" name="attending2[]" value="15 september Wedding Day"> <span class="wpcf7-list-item-label">15 september Wedding Day</span></span><span class="wpcf7-list-item last"><input type="checkbox" name="attending2[]" value="N/A"> <span class="wpcf7-list-item-label">N/A</span></span></span>
脚本:
$(function(){
$("#guest1").click( function(){
if( $(this).is(":checked") ) {
$('input[name="attending2[]"]').prop('disabled', true).css("background","#666").attr("checked", false);
$('.last input[name="attending2[]').prop('disabled', false).css("background","#666").attr("checked", true);
$('select[name="foodspec2"]').val("N/A").prop('disabled', true).css("background","#666");
$('select[name="country2"]').val("N/A").prop('disabled', true).css("background","#666");
$("input[name='salutation2']").val("N/A").prop('readonly', true).css("background","#666");
$("input[name='name2']").val("N/A").prop('readonly', true).css("background","#666");
$("textarea[name='address22a']").val("N/A").prop('readonly', true).css("background","#666");
$("textarea[name='address22b']").val("N/A").prop('readonly', true).css("background","#666");
$("input[name='city2']").val("N/A").prop('readonly', true).css("background","#666");
$("input[name='postal2']").val("000").prop('readonly', true).css("background","#666");
$("input[name='passcode2']").val("000").prop('readonly', true).css("background","#666");
return;
}
});
$("#guest2").click( function(){
if( $(this).is(":checked") ) {
$('input[name="attending2[]"]').prop('disabled', false).css("background","#dadada").attr("checked", false);
$('.last input[name="attending2[]').prop('disabled', false).css("background","#666").attr("checked", false);
$('select[name="foodspec2"]').val(" ").prop('disabled', false).css("background","#dadada");
$('select[name="country2"]').val(" ").prop('disabled', false).css("background","#dadada");
$("input[name='salutation2']").val(" ").prop('readonly', false).css("background","#dadada");
$("input[name='name2']").val(" ").prop('readonly', false).css("background","#dadada");
$("textarea[name='address22a']").val(" ").prop('readonly', false).css("background","#dadada");
$("textarea[name='address22b']").val(" ").prop('readonly', false).css("background","#dadada");
$("input[name='city2']").val(" ").prop('readonly', false).css("background","#dadada");
$("input[name='postal2']").val(" ").prop('readonly', false).css("background","#dadada");
$("input[name='passcode2']").val(" ").prop('readonly', false).css("background","#dadada");
}
});
});
Javascript或jquery解决方案是可以的,只要函数能像前面所说的那样工作。
FIDDLE HERE
你好,亲爱的,它为单选按钮上的已检查和启用/禁用复选框工作改变如果使用有任何混淆,请写下评论。
<body>
<span>
<input type="radio" name="attendee" id="guest1" value="1">
1</span><span>
<input type="radio" name="attendee" id="guest2" value="2" checked="checked">
2</span>
<br>
<span class="wpcf7-form-control wpcf7-checkbox wpcf7-validates-as-required JPCCheck"><span class="wpcf7-list-item first">
<input type="checkbox" name="attending2[]" value="14 september - Welcome Dinner">
<span class="wpcf7-list-item-label">14 september - Welcome Dinner</span></span><span class="wpcf7-list-item">
<input type="checkbox" name="attending2[]" value="15 september Wedding Day">
<span class="wpcf7-list-item-label">15 september Wedding Day</span></span><span class="wpcf7-list-item last">
<input type="checkbox" name="attending2[]" value="N/A">
<span class="wpcf7-list-item-label">N/A</span></span></span>
<script>
$(function() {
$(document).on("change", "#guest1, #guest2", function() {
var radioVal = $(this).val();
var checkLength = $('.wpcf7-form-control .wpcf7-list-item input[type="checkbox"]').length;
if (radioVal == 1) {
for (var i = 0; i < checkLength; i++) {
if (i == (checkLength - 1)) {
$('.wpcf7-form-control .wpcf7-list-item input[type="checkbox"]').eq(i).prop("disabled", false);
$('.wpcf7-form-control .wpcf7-list-item input[type="checkbox"]').eq(i).prop('checked', true);
} else
$('.wpcf7-form-control .wpcf7-list-item input[type="checkbox"]').eq(i).prop("disabled", true);
}
} else {
for (var i = 0; i < checkLength; i++) {
if (i == (checkLength - 1)) {
$('.wpcf7-form-control .wpcf7-list-item input[type="checkbox"]').eq(i).prop("disabled", false);
$('.wpcf7-form-control .wpcf7-list-item input[type="checkbox"]').eq(i).prop('checked', false);
} else
$('.wpcf7-form-control .wpcf7-list-item input[type="checkbox"]').eq(i).prop("disabled", false);
}
}
});
});
</script>
</body>
相关文章:
- 分页:如何用AJAX加载第一个页面
- 加载器组件仅加载一次
- 如何加载一次模型并将其存储到变量中
- JS文件未加载第一页加载
- 每15天为新用户加载一次放大弹出菜单
- Jquery Ajax每隔1秒加载一次
- 每个用户/浏览器会话只加载一次Javascript
- 当audiojs加载两次时,audiojs进度条不工作
- 自定义JQUERY未在分页页面上加载(第一页除外)
- 获取 window.location.reload 以在 Ionic 中仅加载一次
- 只加载一次js函数
- 剑道TabstripDons't正确加载第一个选项卡
- 用于单击页面上的按钮的Javascript,每隔几分钟就会加载一次
- 有没有办法阻止脚本加载两次?JavaScript
- Facebook喜欢的按钮只加载一次
- 如何每 30 秒加载一次页面的一部分
- 为什么在 IIS7 中托管 MVC3 项目时,我的 AJAX 加载第一次失败
- 谷歌地图标记不加载第一次左右
- Youtube iFrame(与javascript API)加载第一次,但不是第二次.为什么
- 一些javascript问题:奇怪的时间依赖和图像不加载第一次