0

したがって、3つの選択入力フィールドがあり、選択した他のオプションを無効にできるかどうか疑問に思いました。すなわち:

<tr id="row1">
    <th>Row 1</th>
    <td>
        <select>
            <option value="1">1</option>
            <option value="2" selected>2 selected so 1+3 are disabled</option>
            <option value="3">3</option>
        </select>
    </td>
</tr>

<tr id="row2">
    <th>Row 2</th>
    <td>
        <select>
            <option value="1" selected>1 selected 2+3 are disabled</option>
            <option value="2">2</option>
            <option value="3">3</option>
        </select>
    </td>
</tr>

<tr id="row3">
    <th>Row 3</th>
    <td>
        <select>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3" selected>3 (you get it...)</option>
        </select>
    </td>
</tr>
4

3 に答える 3

2

これを試して:

$('select').change(function(){
    $(this).find('option:not(:selected)').prop('disabled', true)
})

デモ

于 2012-07-24T17:36:59.537 に答える
2

onchangeイベントをselectにバインドできます。次に、選択されなかったオプション要素を選択し、これを無効にします。すでにjQueryに精通している場合は、次のように行うことができます。

$("select").bind("change", function(){
        $(this).children("option:not(:selected)").attr("disabled", "disabled");
    });
于 2012-07-24T17:42:22.173 に答える
0

他のオプションを無効にすると、ユーザーはとにかく選択を変更できなくなります。そのため、javascriptを使用して他のすべてのオプションを削除してください。

迅速で汚い方法は

<select onchange='for(vari=0, l=this.options.length; i<l; i++){ if(this.options[i].selected) continue; this.remove(i); }'>

Jqueryは必要ありません。ただし、これらの特定のselectステートメントのハンドラーとしてこれをインポートして適用できる外部のjavascriptが他にない場合を除いて、javascriptとhtmlを混在させることはお勧めしません。

于 2012-07-24T17:42:44.247 に答える