0

私は別のステップで分割したいと思う巨大なフォームがありますが、次のステップに進む前に現行ステップのフィールドを検証する必要があります。ASP.NET MVCと部分的なクライアント側の検証

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

これを行う方法はありますか?

よろしくお願いいたします。

答えて

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(); 
} 
1

デフォルトmvc3控えめな検証を使用すると仮定すると、あなたはループを用いて所望の要素の検証を呼び出すことができますし、Single Element Validation

0

あなたがjQuery Validation plug-inを使用することができます。これは、検証時に要素を無視するoptionを持っています。例えば、表示されていない(まだ検証を必要としていない)すべてのフィールドにクラスを付けることができます。たとえば、あなたがこれを行うと思いますclass="ignore"持つすべてのフォーム要素を無視します

$("#myform").validate({ 
    ignore: ".ignore" 
}) 
0

属性class="ignore"作品でそれらをマークすることによって要素を無視しますが、MVC 3はデフォルトでとplug-in will not validate disabled fieldsをすることをjQueryの検証プラグインを使用しています。表示されている10個のフィールドのほかに要素を隠しているコードでは、これらの要素も無効にすることができ、検証されません(無効なフィールドはサーバーにもポストされません)。

$('input').attr('disabled', 'disabled'); 
関連する問題