我希望有人可以帮助我,我一直在努力,我有一个来自和表格内的表格有列。它从Mysql表中检索数据。在第2列中显示当前信息,在第3列中显示更新值的表单选项,例如:
First name: John [Form field to update]
Date of birth: 1970-01-01 [form field to update]
我特别努力让java脚本在弹出日历中运行。如果我从html运行它它工作正常但是当我在php中执行它时我无法运行它,因为它在while循环中显示表单:
<head>
<script src="datetimepicker_css.js"></script>
</head>
<body>
<?php
.....
$sql2="SELECT * FROM em_detail WHERE id = '$data1'";
$result2=mysql_query($sql2);
echo "<form action='upd_emp.php' method=post>";
while($row2 = mysql_fetch_assoc($result2)) {
$id_2 = $row2['id'] ;
.....
echo "<tr>";
echo "<td height=35px><strong>Date of Birth: </strong></td>";
echo "<td>$dob_2</td>";
echo "<td><input size=30 type=Text name=dob id=demo1/></td>";
echo "<td align=left><img src=images/cal.gif onclick=javascript:NewCssCal('demo1') style=cursor:pointer/></td>";
echo " </tr>";
答案 0 :(得分:2)
它不起作用,因为在循环中打印的每一行中,相应的输入具有相同的ID - demo1
。
HTML中的ID在所有元素中都应该是唯一的。这意味着每个打开的日历都会查找ID为demo1
的输入,并始终找到相同的输入。
您需要确保每行中的输入都具有唯一ID。您可以使用您拥有的变量$id_2
,或者您可以为循环的每次迭代递增一个计数器并使用它。然后,您将在id
的{{1}}和日历触发器的<input>
中使用该唯一编号。
onclick
此外,我还使用以下更改更新代码:
<?php
//...
$counter = 0;
while($row2 = mysql_fetch_assoc($result2)) {
$id_2 = $row2['id'] ;
?>
<tr>
<td height="35"><strong>Date of Birth: </strong></td>
<td><?php echo $dob_2; ?></td>
<td><input size="30" type="text" name="dob_<?php echo $id_2; ?>" id="demo_<?php echo $counter; ?>"/></td>
<td align="left"><img src="images/cal.gif" onclick="NewCssCal('demo_<?php echo $counter; ?>');" style="cursor:pointer"/></td>
</tr>
<?php
$counter++;
}
也应该是唯一的。 name
和?>
。<?php
属性中不需要javascript:
- 它们始终是Javascript,onclick
只是一个未使用的标签。答案 1 :(得分:0)
我认为问题是您尝试执行的代码是使用ID
中的input
。 ID只能在页面上使用一次,否则JavaScript不知道要使用哪个字段。
你有两个潜在的选择,第一个是使用一个类来调用日期选择器,这是我个人所做的,它的作品很有魅力。您可能需要稍微修改一下代码才能使其正常工作。
第二种是为您正在使用的每个ID
字段动态生成不同的input
。
我希望这会对你有所帮助。