0

我有一个表单,取决于您选择显示或隐藏 div 的选项。

在这个 div 中,我有两个元素输入。

如果将 div 设置为显示,我有一个添加属性 required true 的函数。

如果设置为不显示,则不显示,但它会告诉我

name='montant_creance' 的无效表单控件不可聚焦。index.php:1 name='condition2' 的无效表单控件不可聚焦。

但我真的不明白为什么,因为 div 设置为不显示。

这是我使用的功能

 <script type="text/javascript">
function addattribute()
{
    if (document.getElementById('montant').style.display == "block")
    {
        document.getElementsByName('montant_creance')[1].setAttribute('required');
        document.getElementsByName('condition2')[0].setAttribute('required');
    }

}
</script>

那么谁能解释我为什么它在控制台中显示这条消息?我试过使用那个功能

<script type="text/javascript">
function addattribute()
{
    if (document.getElementById('montant').style.display == "block")
    {
        document.getElementsByName('montant_creance')[0].setAttribute('required');
        document.getElementsByName('condition2')[0].setAttribute('required');
    }
    if (document.getElementById('montant').style.display == "none")
    {
        document.getElementsByName('montant_creance')[0].setAttribute('required','false');
        document.getElementsByName('condition2')[0].setAttribute('required','false');
    }
}
</script>

它经常说

name='montant_creance' 的无效表单控件不可聚焦。index.php:1 name='condition2' 的无效表单控件不可聚焦。

我还尝试添加一些隐藏的输入类型;使用该功能:

<script type="text/javascript">
function addattribute()
{
    if (document.getElementById('montant').style.display == "block")
    {
        document.getElementsByName('montant_creance')[1].setAttribute('required');
        document.getElementsByName('condition2')[1].setAttribute('required');
    }
    if (document.getElementById('montant').style.display == "none")
    {
        document.getElementsByName('montant_creance')[0].setAttribute('required','false');
        document.getElementsByName('condition2')[0].setAttribute('required','false');
    }
}
</script>

这是预览:http: //jsfiddle.net/VUZQP/

接受我最大的尊重

4

1 回答 1

1

仅使用一个参数调用.setAttribute()将有效地将属性设置为“false”。你真的不应该使用setAttribute()

document.getElementsByName('montant_creance')[1].required = true; // or false

HTML 中的大多数属性都是作为 DOM 元素的属性实现,无需使用.setAttribute(). 它们是对象的直接属性,应该这样对待。

于 2012-09-27T12:38:11.453 回答