IMHO、クラスは、スクリプトのページ内の要素に機能的なターゲットを与えるのではなく、CSS の書式設定のために要素をマークするのに適しています。
フォームに ID を割り当てることをお勧めします。これにより、javascript で getElementById 関数を使用して ID を選択し、その要素をナビゲートして、それぞれの要素に対して検証関数 (validateField() など) を実行できます。だいたいこんな感じ
function validateField(fieldToValidate) {
//Here you can perform your validation against fieldToValidate.value (for text inputs)
}
var frm = document.getElementById("myForm");
for (var i=0; frm.elements[i]; i++)
{//Cycle through all input tags, of text type, inside the form
if (
frm.elements[i].tagName=="INPUT"
&&
frm.elements[i].getAttribute("type")=="text")
)
{
validateField(frm.elements[i]);
}
}
さらに、動的に生成された要素の名前が、例のように特定の命名規則に従っていることがわかっている場合 (X が数値である countX)、動的に生成された入力フィールドのみを検証したい場合は、それらがテキスト入力フィールドであることを知っています。 、それらのみを確認できます。名前の代わりに特定のIDをフィールドに割り当てて、同じ名前を使用していないことを確認し、すべきでないことを検証することをお勧めします。
PHP側
<form method="post" action="##" id="myForm" name="test" onsubmit="return validate()">
<?php
$i=0;
while($i<5)
{
echo "<input type='text' id='txtField$i'>"
$i++;
}
?>
JS側
function validateField(fieldToValidate) {
//Here you can perform your validation against fieldToValidate.value (for text inputs)
}
var frm = document.getElementById("myForm");
var currentField;
for (var i=0; currentField = document.getElementById("txtField"+i); i++)
{//Cycle through all txtField* starting IDs elements
validateField(currentField);
}