我需要根据需要动态设置textarea,但它不想正常工作。 JQuery检查它本身,但然后无法检查它是否被检查。但是当你在第二个收音机里面点击时,总是需要textarea。我尝试了很多次才能使它有效,但它仍然有问题。我添加了“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');
}
});
答案 0 :(得分: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');
});
答案 1 :(得分: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的解决方案,因为它没有'使用'价值'来工作。
非常感谢你们,伙计们! 祝你今天愉快! :)