使用 jQuery 检查无线电时,检查是否选中无线电不起作用

Checking if radio is checked doesn't work when the radio is checked using jQuery

本文关键字:无线电 检查 不起作用 是否 jQuery 使用      更新时间:2023-09-26

我需要根据需要动态设置文本区域,但它不想正常工作。JQuery 自己检查它,但无法检查它是否被选中。但是,当您在第二个收音机内单击时,文本区域始终是必需的。我尝试了很多次让它工作,但它仍然是错误的。我添加了"attr"和"removeAttr",因为我在stackoverflow上读到有时".prop('required',false);"不起作用,但仍然没有运气。

我对我的问题做了一个小提琴.jsFiddle

$(".parent-div").click(function() {
    $(this).next().slideToggle();
    var a = $(this).next();
    $('.child-div').not(a).slideUp();
    $(this).find("input").prop( "checked", true );
});
$("#my-radio").change(function() {
if(this.checked) {
    $("#my-textarea").prop('required',true);
$("#my-textarea").attr('required');
}
else {
    $("#my-textarea").prop('required',false);
$("#my-textarea").removeAttr('required');
}
});

你不需要 #my-radio 的更改事件。您可以在如下所示.parent-div单击事件中执行此操作。

$(".parent-div").click(function () {
    $(this).next().slideToggle();
    var a = $(this).next();
    $('.child-div').not(a).slideUp();
    //i have added this
    var checkbox = $(this).find("input");
    checkbox.prop("checked", true);
    $("#my-textarea").prop('required', checkbox.val() == 'second');
});

更新的小提琴

谢谢你,阿齐姆。用户adeneo也给了我一个解决方案,你可以在这里找到它:https://jsfiddle.net/h8bwqpyb/6/

$(".parent-div").click(function() {
$(this).next().slideToggle();
var a = $(this).next();
$('.child-div').not(a).slideUp();
var inp = $(this).find("input").prop("checked", true);
$("#my-textarea").prop('required', inp.attr('id') === 'my-radio');
});

这两种解决方案都很好用,但我最终选择了adeneo的解决方案,因为它不使用"价值"来工作。

非常感谢你们俩,伙计们!有好的一天!:)