Javascript prop(';required';,true)可以工作,但prop(';required';,false)不能工作;T

Javascript prop(';required';,true)可以工作,但prop(';required';,false)不能工作;T,javascript,jquery,Javascript,Jquery,为什么$('#select_embed')属性设置为true,而不是false?相反,我尝试了removeAttribute('required'),但也没有成功 <script> function showBundles(){ if (document.getElementById("embed").checked){ $('#div_embed_bundles').show('fast') $('#sele

为什么$('#select_embed')属性设置为true,而不是false?相反,我尝试了removeAttribute('required'),但也没有成功

<script>

    function showBundles(){
        if (document.getElementById("embed").checked){
            $('#div_embed_bundles').show('fast')
            $('#select_embed').prop('required',true);
        }
        else {
            $('#div_embed_bundles').hide('fast')
            $('#select_embed').prop('required',false);
        }
    }

</script>

函数showBundles(){
if(document.getElementById(“嵌入”).checked){
$('#div_embed_bundles')。显示('fast')
$('select_embed').prop('required',true);
}
否则{
$('#div_embed_bundles')。隐藏('fast')
$('select'u embed').prop('required',false);
}
}
理想情况下,如果
prop('required',true)
正常工作,那么
prop('required',false)
也应该正常工作。但是您可以尝试使用
removeAttr
,希望这对您有所帮助

function showBundles(){
        if (document.getElementById("embed").checked){
            $('#div_embed_bundles').show('fast')
            $('#select_embed').prop('required',true);
        }
        else {
            $('#div_embed_bundles').hide('fast')
            $('#select_embed').removeAttr('required');
        }
    }
使用attr()而不是prop()。 我使用了attr('required',true)和attr('required',false),两者都工作得很好。 阅读上的文档,了解何时使用attr()和何时使用prop()

或者阅读下面.attr()上文档的重要部分:

.attr(): 获取匹配元素集中第一个元素的属性值,或为每个匹配元素设置一个或多个属性

从jQuery1.6开始,.attr()方法为尚未设置的属性返回undefined。要检索和更改DOM属性,例如表单元素的选中、选中或禁用状态,请使用.prop()方法

属性与属性 属性和属性之间的差异在特定情况下可能很重要。在jQuery1.6之前,.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致不一致的行为。从jQuery1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()则检索属性


例如,应检索selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked和defaultSelected,并使用.prop()方法进行设置。在jQuery1.6之前,可以使用.attr()方法检索这些属性,但这不在attr的范围内。这些字段没有相应的属性,只是属性。

@Daniel A.怀特:在HTML5中,表单字段可以设置
required
属性,以指示该字段是必需的。@MFB:适用于我:
if($('#embed')[0]。选中){…
不需要
getElementsById
@Daniel A.White,谢谢你,这确实是我设置和取消设置它的原因。@Joseph Silber,谢谢你,当我将控件更改为select时,你的小提琴甚至可以工作,但是,它在我的表单上仍然不工作:-(我正在使用Google javascript,可能有差异(bug)。谢谢@ShankarSangoli。我最终使用了removeAttr(“必需”)。这是唯一有效的方法。可以确认
removeAttr()
在我的情况下有效,并且
.prop()
设置为false doess not。你能在回答中包含链接的内容吗?这很有帮助,因为一段时间后,此链接可能会出现链接损坏,或者网站本身可能会崩溃。@制造商,我已编辑了我的回答,以包含链接的内容。请查看。