0

さまざまなステップに分割したい巨大なフォームがありますが、次のステップに進む前に、現在のステップのフィールドを検証する必要があります。

例:私のフォームには40個のフィールドがあり、それらは4つのステップ(それぞれ10個のフィールド)に分割されています。HTMLでは40は同じページにありますが、jQueryでは最初の10と次のボタンのみを表示し、4番目のページには[送信]ボタンが含まれています。次のステップに進む前に、これらの10個のフィールドの検証を呼び出す方法が必要です。

これを達成する方法はありますか?

よろしく。

4

4 に答える 4

1

デフォルトのmvc3の目立たない検証を使用すると仮定すると、ループと単一要素の検証を使用して、目的の要素の検証を呼び出すことができます。

于 2011-05-13T13:16:45.867 に答える
0

jQueryValidationプラグインを使用できます。これには、検証時に要素を無視するオプションがあります。したがって、たとえば、表示されていない(まだ検証する必要がない)すべてのフィールドにクラスのマークを付けることができます。たとえば、すべてのフォーム要素を無視するには、次のようにしclass="ignore"ます。

$("#myform").validate({
   ignore: ".ignore"
})
于 2011-05-13T13:17:59.117 に答える
0

要素を属性でマークすることで要素を無視しますがclass="ignore"、MVC3はデフォルトでjQueryの検証プラグインを使用しますplug-in will not validate disabled fields。表示されている10個のフィールド以外に要素を非表示にしているコードでは、それらの要素も無効にでき、検証されません(また、これらの無効なフィールドはサーバーに送信されないことに注意してください)。

例えば

$('input').attr('disabled', 'disabled');
于 2011-05-13T15:48:58.143 に答える
0

ボタンを使用して各ステップ間を移動している場合は、ページを修正して、ステップごとに個別のフォームを作成できます。次に、検証を送信ボタンの親であるフォームに制限し、「ステップ」の検証を使用して、次のステップでフォームを有効化/表示するかどうかを決定できます。次にいくつかのサンプルコードを示します。

$(".stepButton").live("click", function() {
    if (isValid(this)) {
        // code to proceed to next step
    }
});

function isValid(el) {
    var $thisform = $(el).parent().parent();
    $thisform.validate();
    return $thisform.valid();
}
于 2011-05-13T17:39:23.520 に答える