2012-04-12 4 views
0

私はjavascriptでオプション要素を動的に作成しました。 1つの選択フィールドからオプションをダブルクリックして2番目の無効な複数の選択フィールドに転送します。これは正常に動作します。この問題は、私が新しい情報でフォームを送信するときに表示されます。 2番目の選択フィールドはPHPに渡されません。私はそれが空だと思っていると思っていますが、私が追加した各オプションはデフォルトで選択されており、視覚的に見ることができます。私はこれを解決しようとしていますが、ほとんど運がありません。私が見つけることができるすべては、最も可能性の高いcupritは、ブラウザの非互換性であるか、要素がフォームに追加されていないことを示します。ブラウザの互換性に問題がある場合は、すべての主要ブラウザで同じ結果を試してみたので、どちらが欠けているか知りたいです(FF、Chrome、IE)。フォームに追加されていないとして、私はそれが可能である可能性があります表示されません。 select要素は既にフォームに存在しており、新しいオプションを追加するだけです。私は何かを逃しているのですか、これはちょうど不可能ですか?[disabled multi]にオプションが追加されました動的にフィールドを選択しても投稿されませんか?

<script type="text/javascript" language="JavaScript"> 
function addModule(value, title) { 
    modules = document.getElementById('modules'); 
    modules.options[modules.options.length] = new Option(title, value, true); 
} 
</script> 
<form name="addModules" method="POST" action="submit.php"> 
<select name="moduleList" size="20" ondblclick="addModule(this.options[this.selectedIndex].text, this.value);"> 
<?php //dynamically created options from PHP ?> 
</select> 
<select id="modules" name="modules[]" multiple="multiple" size="20" DISABLED></select> 
<input type="submit" value="Add Modules" /> 
</form> 
+1

** ** DISABLED **フィールドに追加されたオプションのみが表示されます... –

答えて

2

無効なフィールドは送信されません。最も簡単な解決策は、読み取り専用に変更することです。あなたが無効にしていると判断された場合は、値を使って更新された隠しフィールドを作成することができますが、readonlyを使い、必要に応じてスタイルを設定することを強くお勧めします。

+0

これは、前に読んだことがないというトリックでした。このフィールドのオプションが選択解除されないようにする方法はありますか?私がそれを無効にしたとき、彼らはフィールド内をクリックしても選択されたままになりましたが、今は選択しません。ありがとう!私はまだタイマーで待つことができるときに受け入れます... – mseancole

+0

@Showerheadうーん、それは可能だろうと思った。私はあなたがJavaScriptでそれを行うことができると思います。もう1つの選択肢は、隠しフィールドを使用し、無効にすることです。私は驚いたが、readonlyは選択解除できる。 – Corbin

+0

提案をお寄せいただきありがとうございますが、隠しフィールドを避けたい場合は、それ以外の場合は視覚的に選択肢を確認することができません。新しいスパンを追加してデータを取り込むことはできますがそれは私が隠しフィールドを更新するようにリストと一緒に...うーん...考えて、感謝をもう一度:) – mseancole

0

2番目の選択が無効になっているため、フォームが送信されたときにデータが送信されないためです。

無効にする代わりに読み取り専用にすることもできます。

0

これは標準的なブラウザの動作です。無効な選択リストに値を追加するときに、非表示の入力フィールドに値を追加して、ポストされた要求でこれにアクセスすることもできます。