使用jQuery选中单选框后,检查单选框是否被选中的方法不起作用。

3
我需要动态设置文本区域是否必填,但它无法正常工作。JQuery自己检查,但然后无法检查它是否被选中。但是当鼠标点击第二个单选按钮时,文本区域始终是必需的。我尝试了很多次让它正常工作,但仍然有错误。我添加了"attr"和"removeAttr",因为我在stackoverflow上读到有时'.prop('required',false);'无法起作用,但还是没有成功。
我用我的问题做了个jsFiddle。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');
}
});

attr 接受两个参数,而赋值... - Rayon
只要设置了属性,就不需要设置属性值。你是如何检查文本区域是否为“必填项”的?你是试图提交表单,还是只是查看HTML代码? - adeneo
在页面上,我将发送表单,但现在我需要让它工作起来。当我想要发送“First”并且文本区域是“必填”的时候,它希望在那里写些什么。这就是为什么我想动态更改此属性的原因。 - joryl
问题在于只有一个单选框与ID“my-radio”匹配,另一个不匹配,因此事件处理程序仅在单击第二个单选框时运行,而在单击第一个单选框时不会运行。 - adeneo
2
确定 -> https://jsfiddle.net/h8bwqpyb/6/ - adeneo
显示剩余3条评论
2个回答

1
您不需要#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');
});

已更新JSFiddle代码


0

谢谢,Azim。 用户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的解决方案,因为它不使用'value'来工作。

非常感谢你们两个!祝你们有美好的一天!:)


1
很高兴能为您提供帮助。两个解决方案都是同一类型的。 - Ibrahim Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接