2017-02-22 5 views
1

これらのフィールドはJQueryで作成されます。複数のname []配列を持つJQueryフォームを検証する方法は?

「aname []」フィールドの配列を検証するにはどうすればよいですか(次のステップに進む前に入力する必要があります)。

HTMLにはJQuery:

input ="<input name='aname[]' id='1' placeholder='yourname1' type='text' required />"; 
input +="<input name='aname[]' id='2' placeholder='yourname2' type='text' required />"; 
input +="<input name='aname[]' id='3' placeholder='yourname3' type='text' required />"; 
$(".placeholder").append(input); 

jQueryのコマンド

$(document).ready(function() { 
    var items = $('input[name="items[]"]').text(); 
    if(items == ""){ 
     alert("fill this field"); 
    } 
}); 

答えて

2

2つの問題の入力を試してみて、取得する:

  1. text()は、要素のテキストを取得する(spanのようなまたはdiv)、入力の値ではありません。入力の値を取得するには、valを使用します。 (またはDOM要素の場合はvalueプロパティ)

  2. ページの読み込みだけでなく、イベントに応じてチェックを実行する必要があります。あなたがそのコードにval()text()を変更した場合は

  3. 、あなただけ(text()は少し奇妙であるとval()や他のほとんどのjQueryゲッターに動作が異なります)最初 1の値をチェックすることがあります。

あなたがそれらの全てが記入されていることを確認したいのであれば、あなたはイベントハンドラといくつかの種類のループ必要があります。もちろん、

$(document).ready(function() { 
    $("selector-for-the-form").on("submit", function(e) { 
     $(this).find('input[name="items[]"]').each(function() { 
      if (this.value == "") { 
       this.focus();    // So the user knows which field... 
       alert("fill this field"); // ...although this may mess that up 
       e.preventDefault();  // Prevent form submission 
       return false;    // Stop looping 
      } 
     }); 
    }); 
}); 

を、alert ISN」この種の事件では通常、ユーザーエクスペリエンスが最も優れています。積極的な検証や、入力の境界線の色を変更したり、インラインメッセージを表示したりするなどの作業が必要になるまで、ユーザーに不快感を与えたり、ユーザーが行っていることを中断したりしない通知があれば、もっと楽しいです。 (それを行うのに役立つプラグインもたくさんあります)

+0

私は、テストのためにalert()を使用しました。ほとんど私はトーストを使用します。私はあなたが自分の説明をどうやって使うべきか疑問に思っていたが、あなたの説明まではどうか分からなかった。素晴らしい情報:) – Sol

+1

e.preventDefault();を実行する必要がありますか? ?これにより、フォームの送信が停止されます。 – Sol

+1

@ user7480839:Doh!はい。だから私は 'e'パラメータを宣言したのですが、私は呼び出しを追加するのを忘れました!最初に問題のあるフィールドを見つけたときにループを止める 'each'に' return false;と一緒に今追加しました。 (あなたがtoastrを使用している場合、あなたが望むかもしれません。) –

関連する問題