私はasp.net mvc 3アプリケーションビューに取り組んでいます。データベースから取得したデータに基づいて動的にフォームを作成しています。一部のテキスト ボックスは編集可能であるため、保存のために送信する前に検証が必要です (もちろん、バック エンドの検証も必要です)。ただし、フォームの動的な性質のため、どのテキスト ボックスを検証する必要があるかわかりません。情報はデータベースからも取得されるため、実行する必要がある可能性のある 3 つのタイプの検証用に 3 つのクラスを作成し、ユーザーの助けを借りて次のように記述しました。
$('#submitDocument').click(function (e) {
if ($(".checkString16 input[type='text']:first").val().length > 16) {
alert("16 symbols max");
e.preventDefault();
} else if (!mathFunctions.isInt($(".checkULong input[type='text']:first").val())) {
alert("Integer");
e.preventDefault();
} else if (!mathFunctions.isFloat($(".checkFloat input[type='text']:first").val())) {
alert("Float");
e.preventDefault();
}
});
});
と私のmathFunctions
オブジェクト:
mathFunctions = {
isInt: function (value) {
return value % 1 == 0;
},
isFloat: function (value) {
return ($.isNumeric(value) && value % 1 != 0);
}
};
でも。ここでの問題は、特定のクラスの要素の最初のヒットのみをチェックすることです ( :first
fromを削除してもinput[type='text']:first
。その結果、クラスのテキスト ボックスが 3 つあるcheckFloat
場合、最初のテキスト ボックスがない場合は常に警告が表示されます)。チェックに合格しますが、最初のテキストボックスに正しいデータがあり、他のテキストボックスが正しくない場合、送信は引き続き処理され、このクラス名を持つ最初の要素のみをチェックしてから停止すると思われる警告メッセージはありません.関数で何かをしようとしましたeach()
:
else if ($(".checkFloat input[type='text']:first")).each(function(){!mathFunctions.isFloat(val())})) {
alert("Float!");
}
しかし、最も重要なことは、機能していないことと、かなり複雑に見えることです。そのため、間違った方法で使用しようとしていると思います。
したがって、最も重要な質問-特定のクラスからすべての要素をチェックするにはどうすればよいですか。他の方法でこれを達成できると思いますがeach()
、わかりません。