私は入力データを提出する前に確認する必要があるフォームを持っています。入力要素には1つ以上の検証チェックのタイプが入力され、実行される検証はjQueryによって行われます。送信前にフォームで文字列分割を実行するにはどうすればよいですか?
私のアプローチは、入力要素の「チェック」属性に、「空白、電子メール」など、コンマで区切られたすべてのタイプの検証を入力することです。 jQueryはこの部分を抽出し、配列に分割し、各検証タイプをループします。
問題は、すべての検証チェックが完了するまでフォームを送信したくないということです。しかし、私が "split"関数を使うと、配列を返すので、プログラムはそれをブール値として受け取り、trueが返され、最初のinput要素の後にフォームが提出されます。
ここで、それは他のすべてのフィールドと似ていることのメモを取って、フォームのサンプルです:
// PERFORM VALIDATION CHECKS
$("form").submit(function()
{
// LOOP THROUGH ALL INPUT FIELDS
$("form input, form textarea, form select").each(function()
{
// IF NONE OF THE INPUT'S PARENTS ARE HIDDEN
if($(this).parents(":hidden").length == 0)
{
var thisValue = $(this).val();
var checkWhat = $(this).attr("check");
var checkArray = checkWhat.split(",");
for(var i=0; i<checkArray.length; i++)
{
switch(checkArray[i])
{
case "blank": alert(CheckBlank(thisValue)); break;
case "nric": alert(ValidateNRIC(thisValue)); break;
case "email": alert(ValidateEmail(thisValue)); break;
}
}
}
});
});
<tr>
<td>Full Name</td>
<td><input type="TEXT" name="AccountName" check="blank"></td>
</tr>
<tr>
<td>NRIC</td>
<td><input type="TEXT" name="AccountNRIC" check="blank,nric" maxlength="9"></td>
</tr>
そしてここでは、jQueryの検証コードです
まだコードが部分的にテストされているので、エラーチェック変数がまだ追加されていないことを明確にする必要があります。
ご協力いただきありがとうございます。
検証時にエラーが発生した場合は、なぜe.preventDefaultを使用しないのですか? .submit()// エラーがあればe.preventDefault(); }) –
私が知る限り、 'check'は有効な属性ではありません。代わりにデータ属性を使用します。 'データチェック'。 –
こんにちはヴィンセント、ご返信ありがとうございます。私はそれを私の利益に使うためにどうすればいいのか分かりません。あなたはそれについて私にアドバイスできますか?すべてのコードスニペットやリンクが便利です。 –