0

私の新しいプロジェクトでは、2つのjQueryプラグインを使用しています。

$("input[type=text].color").miniColors();
$("input[type=file], input[type=radio], input[type=checkbox], select").uniform();

このプロジェクトでは、jQueryを使用して動的に構築される複数のアップロードフォームがあります<div>。複数のフォーム要素を含む非表示のコンテナーがあります。ユーザーの選択に応じて、必要な要素がhtml()関数付きのフォームに追加されます。

ユーザーは、タブ(Twitter Bootstrap)を使用して複数のタイプのフォームを切り替えることができます。

プラグインがこれらのフォーム要素で正しく機能していないことに気づきました。

関数を関数付きのフォームにバインドする可能性はありますlive()か、それとも他の方法はありますか?

**編集**フォームは次の機能で作成されています:

function buildForm(target)
{
    var form = $("#" + target);

    switch(target){
        case 'image':
            form.html($("#wrapper-title").html() + $("#wrapper-src").html());
            break;
        case 'generate':
            form.html($("#wrapper-title").html() + $("#wrapper-src").html() + $("#wrapper-generate").html());
            break;
        case 'video':
            form.html($("#wrapper-title").html() + $("#wrapper-url").html());
            break;
        case 'text':
            form.html($("#wrapper-title").html() + $("#wrapper-body").html());
            break;
    }
}

すべての要素はフォームの外側に配置され、<form>ユーザーがフォームのタイプを変更している間、タグ間を移動します。

何が機能しないのですか?たとえば、Uniformプラグインでは、ラジオ/選択ボタンの状態は変更されません(グラフィックは変更されません)。

乾杯!

4

1 に答える 1

1

buildForm新しく追加されたフォームのみを対象とするswitch/caseステートメントの後で、メソッド内のプラグインを初期化します。

function buildForm(target)
{
    var form = $("#" + target);

    switch(target){
        case 'image':
            form.html($("#wrapper-title").html() + $("#wrapper-src").html());
            break;
        case 'generate':
            form.html($("#wrapper-title").html() + $("#wrapper-src").html() + $("#wrapper-generate").html());
            break;
        case 'video':
            form.html($("#wrapper-title").html() + $("#wrapper-url").html());
            break;
        case 'text':
            form.html($("#wrapper-title").html() + $("#wrapper-body").html());
            break;
    }
    $("input[type=text].color", form).miniColors();
    $("input[type=file], input[type=radio], input[type=checkbox], select", form).uniform();
}
于 2012-07-11T20:17:05.570 に答える