2015-09-29 2 views
9

readonly="true"でブートストラップを選択しましたが、選択したオプションを変更することはできます。Twitterのブートストラップを選択してもまだオプションを変更できない

私はdisabled="true"の動作が必要ですが、これを使用すると、選択は送信されません。

私は2の組み合わせが必要です、選択されたオプションは変更できませんが、選択を提出する必要があります。

私は隠しフィールドを使うことができましたが、私は簡単な解決策を望んでいました。

+0

標準的な 'select'要素はそれをサポートしていないので、私は選択代替プラグインがこの動作をするとは考えていません。必要な場合は、自分でコードを記述するか、要素を無効にして隠れた入力を使用するかのいずれかが必要です。 –

答えて

4

ドロップダウンで選択置換を使用することもできますが、ドロップダウンを無効にすることはできますが、依然として非表示の選択要素の値を送信する必要があります。 しかし、隠しフィールドを使用することもできます...

または、選択要素が無効な場合は、選択した値で実際に隠しフィールドを追加します。

<input type="hidden" name="whatever"> 
<select name="whatever"> 

隠しフィールドを選択すると同じ名前を持っている場合、選択の選択された値は、(選択フィールドを動的JSで有効になっている例えば)隠しフィールドの送信された値を上書きします。また、選択が無効な場合、非表示フィールドの値が送信されます。 最初に送信されるものの順序については不明です。

$(document).ready(function(){$('select option:not(:selected)').attr('disabled',true);}); 

この解決方法も有効です(少なくともjsが有効な場合)。選択されていないすべてのオプションが無効になります。したがって、選択されたオプションは送信され、変更することはできません。

pageloadでhtml-form-readonly-select-tag-input

+0

私はあなたに最後の解決策を使ってくれてありがとうございます:$( 'select [readonly]オプション:not(:selected)')attr( 'disabled'、true); – Ruben

+0

あなたはまた、他の投稿へのあなたのリンクを強調することができます、答えは私よりも完全です、多分私の重複ですか? – Ruben

6

私は同様の問題に遭遇しました。私は、フォームonsubmitイベントが発生したときに無効になった属性を削除します。ブラウザは無効な属性をサーバーに戻しません。

$('form').submit(function() { $('[disabled]').removeAttr('disabled'); }) 

私が見つけた唯一の他の選択肢は、隠された入力値を見つけることです。

1

が読み取り専用のために無効に追加類似しており、すでに答え質問があり

$('[readonly]').prop("disabled", true); 

前にjQueryのドキュメントから無効

$('[readonly]').prop("disabled", false); 

ノートを削除し送信:

jQuery 1.6以降、.attr()メソッドは属性 に対して未定義を返します。 などのDOMプロパティを取得および変更するには、フォーム要素のチェック、選択、または無効の状態を .prop()メソッドを使用します。

関連する問題