web-dev-qa-db-ja.com

select要素を読み取り専用に設定する方法(「無効」はサーバーで選択値を渡しません)

次のコードのいずれかを使用すると、select要素は無効に見えますが、選択はサーバーに渡されません:使用するreadonlyを考えていますが、それで問題は解決します。どんな助けも大歓迎です。

$('#selectID').prop('disabled',true);

$('#selectID').prop('disabled','disabled');

$('#selectID').attr('disabled',true);

$('#selectID').attr('disabled','disabled');
18
bumbumpaw

selectを渡すことができるように、次のように設定し直しました。

  $('#selectID').prop('disabled',false);

または

  $('#selectID').attr('disabled',false);

リクエストを渡すとき。

9
bumbumpaw

この回答 を参照してください- HTMLフォーム読み取り専用SELECTタグ/入力

選択要素は無効のままにしておく必要がありますが、同じ名前と値を持つ別の非表示入力も追加する必要があります。

SELECTを再度有効にする場合は、onchangeイベントでその値を非表示の入力にコピーする必要があります。

this fiddle を参照して、無効な選択で選択された値をフォームに送信される非表示フィールドに抽出する方法を説明してください。

<select disabled="disabled" id="sel_test">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
</select>

<input type="hidden" id="hdn_test" />
<div id="output"></div>

$(function(){
    var select_val = $('#sel_test option:selected').val();
    $('#hdn_test').val(select_val);
    $('#output').text('Selected value is: ' + select_val);
});

それが役立つことを願っています。

20
geevee

送信時に選択した値を無効にすることなく。

$('#selectID option:not(:selected)').prop('disabled', true);

If you use Jquery version lesser than 1.7
$('#selectID option:not(:selected)').attr('disabled', true);

わたしにはできる..

6
Prabhagaran

物事を簡素化するために、この目標を達成できるjQueryプラグインがあります: https://github.com/haggen/readonly

  1. プロジェクトにreadonly.jsを含めます。 (jqueryも必要)
  2. 代わりに.attr('readonly', 'readonly').readonly()に置き換えてください。それでおしまい。

    たとえば、$(".someClass").attr('readonly', 'readonly');から$(".someClass").readonly();に変更します。

5
Perry Chiang