我创建了一个包含HTML表单的表格如下: // $ usr只是另一个过程的结果:
<form name="myForm" action="addAccessories.php" method="post" onsubmit="return validateForm(this);">
<table border="1" id="IT">
<tr>
<th>Barcode<em>*</em></th>
<th>Current stock</th>
</tr>
<?php
for($id=1; $id<=$usr; $id++){
?>
<tr>
<td><input type="hidden" name="id[]" value="<?php echo $id; ?>" />
<input type="text" name="bar_code<?php echo $id; ?>" id="bar_code<?php echo $id; ?>" value="" /></td>
“type =”text“id =”description“value =”“/&gt;
<td><input type="text" name="num_stock<?php echo $id; ?>" value="0" id="num_stock<?php echo $id; ?>"/></td>
<?php
}
?>
<tr>
<td> </td>
<td> <button data-theme="b" input type="submit" name="Submit" value="Submit">Add accessories</button></td>
</tr>
</table>
</form>
在输入并创建表格后,我使用验证表单代码对其进行验证(验证和自动完成代码):
<?php
$query= "SELECT description from accessories_type ORDER BY description";
$result= mysqli_query($link, $query) or die(mysqli_error($link));
?>
<script>
$(document).ready(function() {
for(i = 1; i < document.getElementById("IT").rows.length; i++) {
var availableConsoles = [
<?php
while($row = mysqli_fetch_array($result)){
echo '"' . $row['description'] . '"' . ',';
}
?>
];
$( "#description " ).autocomplete({
source: availableConsoles
});
}
});
</script>
<script type="text/javascript">
function validateForm(form){
var errors = [];
var c, cs = form.elements;
var reB = /^bar_code/;
var reN = /^num_stock/;
var reD = /^[0-9]+$/;
for (var i=0;i<cs.length; i++) {
c = cs[i];
if (reB.test(c.name) && c.value == '') {
errors[errors.length]= 'You must enter barcode.';
}
if (reN.test(c.name) && !reD.test(c.value)) {
errors[errors.length] = 'Stock number must be a positive integer.';
}
if (errors.length > 0) {
reportErrors(errors);
return false;
} return true;
}
}
function reportErrors(errors){
var msg = "There were some problems...\n";
for (var i = 0; i<errors.length; i++) {
var numError = i + 1;
msg += "\n" + numError + ". " + errors[i];
}
alert(msg);
}
</script>
然而,它没有按照我的意愿执行。任何人都可以指出我做错了什么以及如何解决它?另外,一般如何调试javascripts代码(比如打印到终端代码执行的结果类似于“PHP中的echo ....”) 谢谢你的帮助。
答案 0 :(得分:0)
我不知道你的问题,但这里有一些事情要做:
而不是:
errors[errors.length] = "Current stock must be an integer";
做的:
errors.push("Current stock must be an integer");
最后,您可以拨打console.log,如@tereško所说,然后按 F12 查看结果:
console.log(errors);
也是这样:
if(isNaN(num_stock)){
可能是这个(为了安全起见):
if(isNaN(parseInt(num_stock))){
现在,errors
数组产生了哪些错误?