4
私はMVC3モデルのバリデーションとショーの検証に目立たずに、 を使用して、要素と検証をクローンする方法を見つけようとします。jQueryによるMVC 3のクローン入力と検証
これは私のビューのコードです:
<div id="d1" class="Addable">
@Html.EditorFor(model => model.CellPhone)
@Html.ValidationMessageFor(model => model.CellPhone)
</div>
<input type"button" class="AddE" />
そしてHTML DOMは、次のとおりです。
<div class="Addable" id="d1">
<input type="text" value="" name="CellPhone" id="CellPhone" data-val-required="Req."
data-val-regex-pattern="^04[1234][0-9]{6}$" data-val-regex="notValid" data-val="true"
class="text-box single-line valid">
<span data-valmsg-replace="true" data-valmsg-for="CellPhone"
class="invalid-side-note field-validation-valid"></span>
</div>
だから私は、配列名などの変更名前で新しいものをクローニングするには、次のスクリプトを使用します。
//Add new Addable div
$('.AddNewE').click(function() {
var Target = $('.Addable:first');
var TargetId = $(Target).attr('id');
var Count = $('.Addable#' + TargetId).size();
var CloneTarget = $(Target).clone();
CloneTarget.find('input').val('');
CloneTarget.insertAfter('.Addable:last');
var TargetName = $(Target).find('input').attr('name');
if (Count == 1) {
var CloneName = TargetName + '[1]';
TargetName = TargetName + '[0]';
$(Target).find('input').attr('name', TargetName);
$(Target).find('span[class|="field-validation"]').attr('data-valmsg-for', TargetName);
$(CloneTarget).find('input').attr('name', CloneName);
$(CloneTarget).find('span[class|="field-validation"]').attr('data-valmsg-for', CloneName);
} else {
var indx = TargetName.length - 3;
var CloneTargetName = TargetName.substring(0, indx);
CloneTargetName = CloneTargetName + '[' + Count + ']';
$(CloneTarget).find('input').attr('name', CloneTargetName);
$(CloneTarget).find('span[class|="field-validation"]').attr('data-valmsg-for', CloneTargetName);
}
});
最初にクローンを作成した後、
<div class="Addable" id="d1">
<input type="text" value="" name="CellPhone[0]" id="CellPhone" data-val-required="Req."
data-val-regex-pattern="^04[1234][0-9]{6}$" data-val-regex="notValid" data-val="true"
class="text-box single-line valid">
<span data-valmsg-replace="true" data-valmsg-for="CellPhone[0]"
class="invalid-side-note field-validation-valid"></span>
</div>
<div class="Addable" id="d1">
<input type="text" value="" name="CellPhone[1]" id="CellPhone" data-val-required="Req."
data-val-regex-pattern="^04[1234][0-9]{6}$" data-val-regex="notValid" data-val="true"
class="text-box single-line valid">
<span data-valmsg-replace="true" data-valmsg-for="CellPhone[1]"
class="invalid-side-note field-validation-valid"></span>
</div>
すべての入力に独自の検証があるため、検証範囲と入力の両方を変更します。 しかし、クローン作成後、検証はまったく機能しませんでした。問題はどこだ?あなたの提案は何ですか?