1

約 40 の質問からなる非常に大きなフォームがあります。質問をセクションに分割し、それぞれに 10 個のセクションを作成し、それぞれを div で囲みました。

jQueryを使用してdivをスライドインおよびスライドアウトしています

 $('a.nextform').click(function(e){  
       $('.hold-all').animate({"left": "-=690"}, 500);
        e.preventDefault();
    })
 $('a.backform').click(function(e){  
       $('.hold-all').animate({"left": "+=690"}, 500);
       e.preventDefault();
    })

どういうわけか、必要なフィールドが完了していない場合、ユーザーが次にクリックすることを許可しないでください.jQueryでこれは可能ですか?

4

5 に答える 5

0

たとえば、入力にIDを与える<input id='name' type='text'/>

次に、を使用して空かどうかを確認します

$('#name').val()

if($('#name').val() != ''){
//do
}
else
{
//dont do
}
于 2012-05-01T09:59:50.660 に答える
0

JQuery を使用してボタン入力に属性 disabled="disabled" を設定できます: w3schools などを参照してください$(button).attr('disabled', 'disabled')。ハンドラーを配置して$(form).submit、デフォルトを防止し、false を返すこともできます。return false上記のクリック ハンドラーでこれ以上クリック コードが実行されないようにすることもできます。

于 2012-05-01T09:59:58.720 に答える
0

検証を段階的に分割することもできます。つまり、現在の div で入力がすべて検証されるまで、次の div に移動しないでください。

使用できる jquery のフォーム検証用のさまざまなプラグインがあり、http://docs.jquery.com/Plugins/Validationから始めることができます。

次に、 .valid() を使用して、先に進むか、エラーを表示するかを確認できます。簡単な大まかな例です。

$('a.nextform').click(function(e){ 
if ("#myform").valid()) {
$('.hold-all').animate({"left": "-=690"}, 500);
    e.preventDefault();
}
}
...
于 2012-05-01T10:00:45.070 に答える
0

もちろん。各入力フィールドを反復処理します - フィールドセットを使用してそれらをグループ化し、.children('input, textarea') のようなものを使用できます - 各入力を検査し、指定された入力に値があるかどうかを確認します。

于 2012-05-01T10:01:23.243 に答える
0

すべてのフォーム フィールドに対してこれを手動で記述すると、非常に面倒で維持が困難になります。リストにフィールドを追加または削除すると、すぐにプロセスの維持、管理、および追跡が困難になります。

あなたが直面する問題は一般的なものであり、解決されたものでもあります:「検証」

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

基本的に、必須のフィールドに「必須」の css クラスを追加します。フォームまたはフォームのコンテナーで検証プラグインを実行します。

ユーザーが [次へ] をクリックすると、$("form#questions").validate() が呼び出されます

検証が true を返した場合は、次の div をスライドさせます。false を返した場合は、スライドしないでください。検証プラグインは、検証に失敗したフィールドの末尾に検証メッセージを追加したり、失敗した制約の検証概要メッセージを提供したりすることもできます。詳細については、ドキュメントを参照してください。

http://jquery.bassistance.de/validate/demo/

于 2012-05-01T10:04:54.287 に答える