6

エンド ユーザーが値を変更できないようにしたい複数選択の SELECT フィールドがあります。

UI の理由から、disabled="true" 属性を使用せずにこれを実行できるようにしたいと考えています。onmousedown、onfocus、onclick を使用して、それぞれをぼかしたり false を返すように設定しようとしましたが、成功しませんでした。

これを行うことはできますか、それとも不可能なことをしようとしていますか?

4

6 に答える 6

9

あなたがしたくないと言ったのは知っていますが、実際には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>

必要に応じて、いつでもselectaclassを指定して、CSS でスタイルを設定できます。このソリューションは、スクリプト機能に関係なく、すべてのブラウザーで機能します。

于 2008-09-04T14:56:08.287 に答える
2

あなたの最善の策は、選択ボックス内のオプションを交換することです. そのボックスに答えが 1 つしかない場合は、クリック可能かどうかは問題ではありません。

ただし、ユーザーに不満を与えるように思われるため、これを行う別の方法を見つけようとします。次のユーザー シナリオを想像してください。

  1. 「ほら、オプションの選択ボックス。」
  2. クリック
  3. 「うーん、どうしてうまくいかなかったの?」
  4. クリック
  5. クリック
  6. 「このばかげたことは壊れています。私はここに戻ってくることはありません。」

選択を HTML テキストに交換すると、同じ目的が達成されます。これは、ほとんどの主要な Javascript フレームワークにとって非常に単純なタスクです。

于 2008-09-04T14:36:44.760 に答える
2

onchangeイベントでやってくれませんか?

<select onfocus="this.oldIndex=this.selectedIndex" onchange="this.selectedIndex=this.oldIndex">
于 2008-09-04T14:31:45.380 に答える
0

このトリガーを試してください。

<select multiple onchange="this.selectedIndex=this.selectedIndex">
<option>1</option>
<option>2</option>
</select>
于 2013-02-07T10:10:18.003 に答える
0

@Jack & @17 of 26、良い点ですが、混乱が問題にならないように、エンドユーザーは選択ボックスが無効になっていることを期待しています。

コントロールを無効にできない理由をもっと明確にするべきでした。

これを使用するアプリケーションでは、オプションの選択を無効にする必要があり、「ロックされた」コントロールが通常のフォーム コントロールのルック アンド フィールを維持する必要があります。

于 2008-09-04T15:03:33.960 に答える