4

私は、jQueryを使用する条件に従って、条件付きコンテンツを使用しています。この部分をフォーム要素に含めたり、除外したりしています。

これが私の関数です:

function MoveInsideForm(id) {
       $("#" + id).insertAfter("#myForm")
   }

function MoveOutsideForm() {
       $("#myPartial1").insertAfter("#element-outside-from");
       $("#myPartial2").insertAfter("##element-outside-from");
   }

問題は、insertAfter()コピーされたHTML5カスタム属性が取得されないことです。

たとえば、私はそのような要素を持っています

<input data-val="true" data-val-required="*" id="MyInput" name="MyInput" type="text" value="" class="input-validation-error"/>

しかし、insertAfter()それをそのようにコピーします:

<input id="MyInput" name="MyInput" type="text" value=""/>

insertAfter()HTML 5属性もコピーするように言うことができる方法はありますか?私のjQueryのバージョンは1.6.1です。

アップデート:

コメントありがとうございます。フォーム内でパーシャルをレンダリングすると、入力が目立たないデータ属性で生成されますが、パーシャルをフォーム外でレンダリングすると、目立たないデータ属性が最初は入力に含まれません。

したがって、フォームの外側でパーシャルをレンダリングすると、最初はデータ属性が含まれていません。したがって、jQueryの問題ではありませんinsertAfter()。目立たないデータ検証属性の生成の性質ですか?

4

1 に答える 1

6

目立たない検証を生成するには、MVC にFormContext. Html.BeginFormまたはの外側に HtmlHelper を配置するAjax.BeginFormと、FormContext を手動でインスタンス化しない限り、HtmlHelper は目立たない検証属性を持ちません。ヘルパーの前に次のコードを挿入することで、FormContext を手動でインスタンス化できます。

this.ViewContext.FormContext = new FormContext();

ヘルパーを BeginForm() の前に配置する場合は、ヘルパーの後、フォームを開始する前に必ず FormContext をクリアしてください。

于 2011-06-16T17:10:12.380 に答える