16

チェックボックスの状態に基づいて div を非表示/表示しています。

<input type="checkbox" id="other" name="os[other]" value="6" onclick="toggle_form_element('os[other]')">

ここに私のJavascript関数があります:

function toggle_form_element(id) {
    if ((document.getElementsByName(id)[0].checked)) {
        document.getElementById('sometimesHidden').style.display = 'block';
    } else {
        document.getElementById('sometimesHidden').style.display = 'none';
    }
}

これは「時々非表示」の div です。

<div id="sometimesHidden">
    <input type="text" size="20" id="other_os" name="other_os">
</div>

ここで、$_POST['array'] から「非表示」div のすべての入力フィールドを除外するために、toggle_form_element 関数も使用したいと思います。

しかし、どうすればこれを行うことができますか?

4

2 に答える 2

5

.disabled要素のプロパティを直接設定できます。

function toggle_form_element(name) {
    var state = document.getElementsByName(name)[0].checked;
    document.getElementById('sometimesHidden').disabled = state;
}

ほとんどの場合、属性よりも要素のプロパティを変更する方が適切であり、セマンティクスもブール型のプロパティの方が明確です。

MDN は、隠しフィールドではこのプロパティが無視されることを示唆していますが、次の点に注意してください。

無効

このブール属性は、フォーム コントロールを操作できないことを示します。特に、クリック イベントは、無効なコントロールでは送出されません。また、無効なコントロールの値はフォームと共に送信されません。

type 属性の値が非表示の場合、この属性は無視されます。

Chrome 27 でのテストでは、Chrome属性を尊重し、フィールドdisabledのフォーム値の送信を防止することが示されていhiddenます。

さらに、W3C仕様ではそのような区別はありません。それは単に「disabled成功できないコントロール」と言っています。

于 2013-05-29T08:37:04.697 に答える