2012-08-15 7 views
8

HTML入力用にreadOnly="true"に相当するHTML選択フィールドの属性または技法はありますか?HTML選択要素に相当するreadOnly

フォームを選択するフィールドがありますが、無効にしたいのですが、フォームが送信されたときにはそのまま渡されます。これは、HTML入力した場合、私はこの

$('select_id').setAttribute('readOnly', 'true'); 

ような何かをしたいとブラウザが編集不可としてフィールドをレンダリングするでしょうが、それは価値がまだバックエンドに渡されるのです。 HTMLの選択と似たようなものが欲しいですが、以下を実行します。

$('#select_id').setAttribute('readOnly', 'true'); 

は動作しません。属性はDOMに正常に追加されますが、ブラウザはそれを選択可能なままレンダリングします。

は私が行うことができます実現

$('#input_id').disabled(); 

が、以下のフィールドがあるとき、その値がバックエンドに渡されていない無効

私は、この選択フィールドを無効にしても、バックエンドに引き渡す方法が必要です。

(例はプロトタイプJSを使用しますが、私は、任意の一般的なソリューションに興味があります)

答えて

22

すべて無効ますが、選択されたオプション:

<select> 
<option disabled="disabled">1</option> 
<option selected="selected">2</option> 
<option disabled="disabled">3</option> 
</select> 

この方法では、ドロップダウンがまだ動作します(値を送信します)、ユーザーは別の値を選択できません。

+2

わからない、これが動作するように見えます(少なくとも現在は他のブラウザをテストしています) –

+3

@AlanStorm、これはテストの地獄です:)) –

+2

このソリューションの問題は、そのユーザーが引き続きCTRL +を使用してオプションの選択を解除できることです。 –

3

無効なクラスを追加します。

.disabled{ 
    color: grey; 
} 

クラス現在の使用は、焦点に、クリックにデフォルトを防ぐため、クリックDBL場合:誰に投票ダウンまたはなぜ

$('#el').bind('click dblclick focus').function(event){ 
    if ($(this).hasClass('disabled')) event.preventDefault(); 
}); 
+4

将来のgoogler 、この例はusinと思われるg jQuery。 –

関連する問題