7

2 つの s がある HTML ページがありますselect

<select id="field" name="field" onchange="checkValidOption();">
    <option />
    <option value="Plugin ID">Plugin ID</option>
    <option value="Name">Name</option>
</select>
<select id="operator" name="operator" onchange="checkValidOption();">
    <option />
    <option value="EQUALS">EQUALS</option>
    <option value="CONTAINS">CONTAINS</option>
    <option value="NOT CONTAINS">NOT CONTAINS</option>
    <option value="REGEX">REGEX</option>
</select>

私が実現したいのはcheckValidOption()、フィールドで「プラグイン ID」が選択されている場合、唯一のオプションが EQUALS (およびそれが選択されている) であり、それ以外の場合は他のすべてのオプションが利用可能になるようにすることです。これにアプローチする方法について何か考えはありますか?

innerHTMLはJSで演算子の選択を変更しようとしました:

document.getElementById("operator").innerHTML =
    "<option value='EQUALS'>EQUALS</option>";

ただし、これは空になります(これには、上記のすべてのものに戻るために select多くの s を手動で設定することも含まれます)。option

別の解決策は考えられません。どんな助けでも大歓迎です。

4

4 に答える 4

1

が選択されたときにオプションを操作するにPlugin IDは:

function checkValidOption(){
    var x=document.getElementById("field");
    var y=document.getElementById("operator");
    if (x.options[1].selected === true){
        document.getElementById("operator").options[1].selected = true;
        for(var i=0; i<y.length; i++){
            if (i !== 1){
                //disabling the other options 
                document.getElementById("operator").options[i].disabled = true;     
            }
        }
    }       
    else{
        for(var i=0; i<y.length; i++){
            //enabling the other options 
            document.getElementById("operator").options[i].disabled = false;     
        }
    }
}

ここにフィドルへのリンクがあります

于 2013-07-31T17:27:26.397 に答える
0

選択フィールドは innerHTML メソッドを使用しないため、値を使用する必要があります。

document.getElementById("operator").value = "...";
于 2013-07-31T17:25:55.287 に答える