所以我在PHP页面中使用了以下Javascript函数进行表单验证。
include ($_SERVER['DOCUMENT_ROOT'] . '/validators.php');
echo "<script Language='JavaScript' Type='text/javascript'><!--\n";
echo "function Prefix_Validator(theForm)\n";
echo "{\n";
validate_numeric('theForm', 'FieldName', 'FieldDesc');
echo "return (true);\n";
echo "}\n";
echo "//--></script>\n";
echo "\n";
这是我的表单输入的样子:
echo "</td><td>\n";
echo "<input type='text' name='txtQuantity_$DeptID' size = '3' value=''>\n";
echo "</td><td>\n";
echo "<input type='text' name='txtMemo_$DeptID' size='50' value=''>\n";
echo "</font></td></tr>\n";
现在通常情况下,如果输入的name =''部分是name ='Qty',我可以用我的java验证执行此操作:
validate_numeric('theForm', 'Qty', 'Quantity');
但由于我的表单在名称中使用了$变量,我不知道如何将它与我的Validator一起使用。这是上述验证函数的扩展部分:
function validate_numeric($formname, $fieldname, $fielddesc){
echo "var checkOK = '0123456789';\n";
echo "var checkStr = $formname.$fieldname.value;\n";
echo "var allValid = true;\n";
echo "var validGroups = true;\n";
echo "var decPoints = 0;\n";
echo "var allNum = '';\n";
echo "for (i = 0; i < checkStr.length; i++)\n";
echo "{\n";
echo "ch = checkStr.charAt(i);\n";
echo "for (j = 0; j < checkOK.length; j++)\n";
echo "if (ch == checkOK.charAt(j))\n";
echo "break;\n";
echo "if (j == checkOK.length)\n";
echo "{\n";
echo "allValid = false;\n";
echo "break;\n";
echo "}\n";
echo "allNum += ch;\n";
echo "}\n";
echo "if (!allValid)\n";
echo "{\n";
echo "alert('Please enter only digit characters in the $fielddesc field.');\n";
echo "$formname.$fieldname.focus();\n";
echo "return (false);\n";
echo "}\n";
return $x;
}
我试过这个,但它不起作用:
validate_numeric('theForm', 'txtQuantity_$DeptID', 'Quantity');
任何建议都会有所帮助。如果需要更多信息,请告诉我,我会尽快提供。
编辑#1
所以我尝试了你所说的dbl引号,这就是我在页面上看到的源码:
var checkOK = '0123456789';
var checkStr = theForm.txtQuantity_.value;
var allValid = true;
var validGroups = true;
var decPoints = 0;
var allNum = '';
for (i = 0; i < checkStr.length; i++)
{
ch = checkStr.charAt(i);
for (j = 0; j < checkOK.length; j++)
if (ch == checkOK.charAt(j))
break;
if (j == checkOK.length)
{
allValid = false;
break;
}
allNum += ch;
}
if (!allValid)
{
alert('Please enter only digit characters in the Quantity field.');
theForm.txtQuantity_.focus();
return (false);
}
txtQuantity_后不应该有某种值吗?在checkStr?
我在这个页面遇到了这么多麻烦,我真的觉得它只是讨厌我,并尽其所能不起作用。
答案 0 :(得分:1)
validate_numeric('theForm', 'txtQuantity_$DeptID', 'Quantity');
将按字面txtQuantity_$DeptID
传递。单引号不解释变量。
你必须至少将它放在这样的双引号中:
validate_numeric('theForm', "txtQuantity_$DeptID", 'Quantity');
在某些编辑中,如果你做的话,它会更清楚
validate_numeric('theForm', "txtQuantity_{$DeptID}", 'Quantity');
我还注意到你的功能echo
一直向下。确保你有一个字符串,你最后return
,所以你echo validate_numeric
而不是把它放在那里。输出的函数难以移动/重构。当你返回时,$x
完全未定义,并且可能用通知填充你的日志