-2

動的な名前でphpを使用して動的に生成された5つのテキストフィールドを追加します。javascriptを使用してこれらのフィールドを検証するにはどうすればよいですかそこの。助けて....

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
function validate()
{
//help me to write validation code here.
}
</script>
</head>
<body>
<form method="post" action="##" name="test" onsubmit="return validate()">
<?php
$i=0;
while($i<5)
{
echo "<input type='text' name='count$i'>"
$i++;
}
echo "<input type='submit' value='ok'>";
?>
</form>
</body>
</html>
4

3 に答える 3

0

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);
}
于 2013-10-22T14:47:17.807 に答える