Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery.attr()未设置属性_Jquery - Fatal编程技术网

jQuery.attr()未设置属性

jQuery.attr()未设置属性,jquery,Jquery,我有“是/否”单选按钮,询问用户是否观看体育比赛。如果他们标记为是,则要求用户检查适用的运动项目。如果答案为“否”,则不需要该部分 如果用户标记“是”或“否”,然后单击“回车”,则我的代码工作正常。但当用户从“是”或“否”更改时,问题就出现了。如果用户先标记“否”,然后再标记“是”,则没有必需的属性。如果发生相反的情况,则存在required属性。请参见下面的html和jquery。非常感谢您的帮助 函数selectatleastOne(){ var requiredcheckbox=$(':

我有“是/否”单选按钮,询问用户是否观看体育比赛。如果他们标记为是,则要求用户检查适用的运动项目。如果答案为“否”,则不需要该部分

如果用户标记“是”或“否”,然后单击“回车”,则我的代码工作正常。但当用户从“是”或“否”更改时,问题就出现了。如果用户先标记“否”,然后再标记“是”,则没有必需的属性。如果发生相反的情况,则存在required属性。请参见下面的html和jquery。非常感谢您的帮助

函数selectatleastOne(){
var requiredcheckbox=$(':复选框[必需]);
必需复选框。每个(函数(){
此.setCustomValidity('请选择所有适用项');
});
必填复选框。在('change',函数(e)上{
var checkboxGroup=requiredcheckbox.filter('[name=“'+$(this.attr('name')+'“]);
var isChecked=checkboxGroup.is(“:checked”);
checkboxGroup.prop('required',!isChecked);
checkboxGroup.each(函数(){
如果(!已检查){
此.setCustomValidity('请选择所有适用项');
}否则{
本协议有效期(“”);
}
});
});
}
jQuery(函数($){
$('input:radio[name=“yes\u no”]')。更改(
函数(){
如果($(this).is(':checked')&&&$(this.val()=='yes'){
$('[name=“sport[]”].attr('required');
选择Atleastone();
}如果($(this).is(':checked')&&&$(this.val()='no'),则为else{
$('[name=“sport[]”)。removeAttr('required');
}
});
});


你看电视还是做运动? 对 不 如果是,请选择所有适用的选项:

全选 清楚的
田径运动
羽毛球
棒球
拳击
板球
骑自行车
曲棍球 足球
公式1
高尔夫
体操
手球
冰球
甲基丙烯酸甲酯
MotoGP
橄榄球
滑雪
斯诺克
足球
游泳
网球
乒乓球
排球
摔跤
其他

提交
为什么“必需”属性设置不正确?因为当用户单击“是”时,您正在呼叫

$('[name="sport[]"]').attr('required');
返回属性的当前值。您希望设置该属性,但应改为调用该属性:

$('[name="sport[]"]').attr('required', true);
(这似乎只在第一次单击时起作用,因为该属性是默认设置的,所以第一次单击“是”不会起任何作用。)

$('input:radio[name=“yes\u no”])。更改(函数(){
if($(this).val()=='yes'){//也不必检查:checked状态
$('[name=“sport[]”].attr('required',true);
}否则{
$('[name=“sport[]”)。removeAttr('required');
}
});
输入:必需{
大纲:2px solid#F00/*因此我们可以很容易地看到结果*/
}

你看电视还是做运动?
对
不
田径运动
羽毛球
棒球
拳击
板球

首先,“修复”HTML代码。这是无效的。然后关注JS。请问哪部分无效?请使用w3验证程序尝试您的HTML代码。你会感到惊讶的。你有几个嵌套错误的标记,并且复选框是自动关闭的,所以不需要
。但是,据我所知,这些都与你的问题无关。可能是重复的感谢,我添加了$(':checkbox[required')。off('change');我仍然会收到错误消息。我目前遇到的问题是从“是”变为“否”…这实际上取决于您在何处添加了
.off()
——但最好不要这样做;取而代之的是只有一个始终绑定的事件来测试“required”属性。