タイトルが述べているように、jQueryにドロップダウンリストで選択された値に基づいて、ダウンボックス。たとえば、ページが読み込まれると、ドロップダウンのデフォルト値は1になり、デフォルトのフィールドセットが表示されます。ユーザーがそのドロップダウンで別の値を選択した場合、クローン作成によってフィールドセットの数を調整する必要があります(これが最適なソリューションだと思います)。jQueryを使用して、ドロップダウンボックスの値に基づいてフォームフィールド(またはフィールドセット)を動的に追加する
ドロップダウンボックスのコードが...
<select id="itemCount" name="itemCount">
<option value="1">1 item</option>
<option value="2">2 items</option>
<option value="3">3 items</option>
<option value="4">4 items</option>
<option value="5">5 items</option>
<option value="6">6 items</option>
</select>
... jQueryの変更リスナー...
$(document).ready(function() {
$("#itemCount").change(function(){
var itemCountVal = jQuery(this).val();
$("#item_dup_1").fieldsManage(itemCountVal);
});
});
...と機能自体:ここでは私がこれまで持っているものです
jQuery.fn.fieldsManage = function (number) {
var clone,
objTemplate = source.clone(true),
source = jQuery(this),
maxClones = number - 1,
clones = [];
if (clones.length < maxClones) {
while (clones.length < maxClones) {
clone = objTemplate.clone(true).insertAfter(clones[clones.length - 1] || source);
clones.push(clone);
}
}
if (clones.length > maxClones) {
// Fieldsets removal function goes here.
}
}
Cされているオブジェクトを(それは実際に私は私が必要なもののための良い出発点だと思ったjQueryプラグインに基づいています)冗談は<fieldset id="item_dup_1"><input><input><input></fieldset>
のようなものです。私はそれについても完全なコードを表示する必要はないと思う。
これは最初の変更の魅力のように機能しますが、ユーザーが値を再度変更すると、状況が悪くなり、正しい数のフィールドセットを表示するのではなく、より多くの情報が表示されます。既にフィールドセットが追加されているという事実を無視して、ゼロから始めて必要なフィールドセットの数を計算しているように見えます。これが私の問題です。私はまた、IDを重複しないように複製するフィールドセットに新しいIDを割り当て、障害を起こすことなく動作する機能(ここでは質問を明確かつ短く保つためには表示されていません)を持っています。
私は間違ったことをしていると確信していますが、私は今この2日間壁に頭を打っています。運が何であるかを見つけようとしています。 !
ありがとうございます!
華麗で、魅力的な作品です!それは私が心に留めていたものですが、道に沿って立ち往生しました。ありがとう、非常に感謝します。 –
おそらくこれはよくあることですが、フィールドセットのカウントを変更する前にクローンされているフィールドセットの入力フィールドにデータが入力されていれば、入力されたデータも同様にクローニングされることがわかりました。単純なクローンを行う.find( "input")。each(function(){jQuery(this).val( "")});クローンが作成された後、あなたはクリーンなクローンを提供します。これでほんの数分の時間を惜しまないことを願っています。 –
これは多かれ少なかれ一般的な知識であり、またクローンが動作する方法です。 jQueryの 'clone'メソッドは内部的に通常のDOMメソッド' cloneNode(true) 'を使用します。どのように動作するかについては、ここを参照してください。http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-3A0ED0A4 – jitter