エンド ユーザーが値を変更できないようにしたい複数選択の SELECT フィールドがあります。
UI の理由から、disabled="true" 属性を使用せずにこれを実行できるようにしたいと考えています。onmousedown、onfocus、onclick を使用して、それぞれをぼかしたり false を返すように設定しようとしましたが、成功しませんでした。
これを行うことはできますか、それとも不可能なことをしようとしていますか?
エンド ユーザーが値を変更できないようにしたい複数選択の SELECT フィールドがあります。
UI の理由から、disabled="true" 属性を使用せずにこれを実行できるようにしたいと考えています。onmousedown、onfocus、onclick を使用して、それぞれをぼかしたり false を返すように設定しようとしましたが、成功しませんでした。
これを行うことはできますか、それとも不可能なことをしようとしていますか?
あなたがしたくないと言ったのは知っていますが、実際にはdisabled
属性を使用する方が良い解決策だと思います:
<select multiple="multiple">
<option value="volvo" selected="true" disabled="disabled">Volvo</option>
<option value="saab" disabled="disabled">Saab</option>
<option value="opel" disabled="disabled">Opel</option>
<option value="audi" disabled="disabled">Audi</option>
</select>
必要に応じて、いつでもselect
aclass
を指定して、CSS でスタイルを設定できます。このソリューションは、スクリプト機能に関係なく、すべてのブラウザーで機能します。
あなたの最善の策は、選択ボックス内のオプションを交換することです. そのボックスに答えが 1 つしかない場合は、クリック可能かどうかは問題ではありません。
ただし、ユーザーに不満を与えるように思われるため、これを行う別の方法を見つけようとします。次のユーザー シナリオを想像してください。
選択を HTML テキストに交換すると、同じ目的が達成されます。これは、ほとんどの主要な Javascript フレームワークにとって非常に単純なタスクです。
onchange
イベントでやってくれませんか?
<select onfocus="this.oldIndex=this.selectedIndex" onchange="this.selectedIndex=this.oldIndex">
このトリガーを試してください。
<select multiple onchange="this.selectedIndex=this.selectedIndex">
<option>1</option>
<option>2</option>
</select>
@Jack & @17 of 26、良い点ですが、混乱が問題にならないように、エンドユーザーは選択ボックスが無効になっていることを期待しています。
コントロールを無効にできない理由をもっと明確にするべきでした。
これを使用するアプリケーションでは、オプションの選択を無効にする必要があり、「ロックされた」コントロールが通常のフォーム コントロールのルック アンド フィールを維持する必要があります。