2012-03-14 19 views
0

マルチ選択ボックスを表示するために以下の行を記述しました。そこでここではPOSTメソッドで選択ボックスの値を無効にする(無効にして以前に選択した)オプション

<select multiple="multiple" name='cars[]'> 
    <option value="volvo" disabled selected='selected'>Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

は、私が最初のボルボを含むすべての選択されたオプションの値を取得したいです。

+0

一部のブラウザ(すべての?)無効なフィールドを送信しません。どちらかを読み取り専用に変更するか、本当に醜いJSハッカーを手に入れてください:) – Corbin

+0

_これまでにselected_をどういう意味ですか? –

+0

すべてのブラウザでこの問題が発生しています –

答えて

1

Afaik、現代のブラウザは無効なオプション/フィールドをフォームに提出しません。最も簡単な解決策は、 "readonly"属性を使用して "readonly"フィールドにすることです。

ただし、読み取り専用でフィールドの外観が変更されないため、フィールドが無効になっているようにフィールドをスタイルする必要があります。

しかしながら、醜い部分は、selectフィールドにreadonly属性を設定できないブラウザがあります。

このケースで私が通常行ってきたことは、実際には選択を無効にして、隠しフィールドに値を格納することです。代わりにこれを制御するために醜いjavascriptを使用します。

更新:

あなたは簡単に(シリアル化された文字列を生成するために、name属性を持っているし、最後にjQuery.param機能を使用して無効化フォーム要素を反復、「serializeDisabled」機能を書くことができこの関数は、ユーザここCMS)から来ている:あなたがonSubmit検証オプションの周りにループするJavaScript関数を作成し、それらを再度有効にでき

(function ($) { 
    $.fn.serializeDisabled = function() { 
    var obj = {}; 

    $(':disabled[name]', this).each(function() { 
     obj[this.name] = $(this).val(); 
    }); 
    return $.param(obj); 
    } 
})(jQuery); 
1

。無効な要素は投稿されません。

1

あなたは無効に設定されているの「読み取り専用」プロパティを入力タイプtext..andの使用を選択置き換える.... POSTデータで取得することはありません...

おかげ

関連する問題