0

選択したオプションに応じて、div を表示または非表示にするフォームがあります。

この div には、2 つの要素が入力されています。

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

パラメータを 1 つだけ指定して呼び出す.setAttribute()と、属性が事実上「false」に設定されます。あなたは本当にまったく使用すべきではありませんsetAttribute()

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

HTML のほとんどの属性は DOM 要素のプロパティ.setAttribute()として実装されており、 . それらはオブジェクトの直接のプロパティであり、そのように扱われるべきです。

于 2012-09-27T12:38:11.453 に答える