Javascript 使用下拉菜单(来自mysql DB)创建动态行,该下拉菜单通过Ajax Jquery填充行内的文本框
Javascript 使用下拉菜单(来自mysql DB)创建动态行,该下拉菜单通过Ajax Jquery填充行内的文本框,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,<label for="PartNumber"><font style="font-size:11px;"><b>Desc: </b></label><span id="sel_user"><input type="text" class="small" name="PartNumber[]" size="20"></span> <label for="AmountOrdered">
<label for="PartNumber"><font style="font-size:11px;"><b>Desc: </b></label><span id="sel_user"><input type="text" class="small" name="PartNumber[]" size="20"></span>
<label for="AmountOrdered"><font style="font-size:11px;"><b>Qty: </b></label><input type="text" required="required" class="small" name="AmountOrdered[]" size="5">
<label for="build"><font style="font-size:11px;"><b>Build#: </b></label><input type="text" required="required" class="small" name="build[]" size="10">
<label for="unit_cost"><font style="font-size:11px;"><b>Unit$: </b></label><input type="text" class="small" name="unit_cost[]" size="10">
<label for="total_cost"><font style="font-size:11px;"><b>Total$: </b></label><input type="text" class="small" name="total_cost[]" size="10">
<label><font style="font-size:11px;"><b>Date: </b></label><input type="text" class="emp_from" name="ExpectedDate[]" size="10">
</td>
</tr>
</table>
</span>
</div>
</div>
<div id="items">
</div>
在上图中,我正在创建动态行(工作正常)。但是,我随后介绍了根据“Desc:”左侧下拉列表中选择的内容填充“Desc:”文本框的功能。这对于第一行很好,但对于之后的任何其他行都不行。
下面是我添加和删除行的javascript代码(运行良好):
<label for="PartNumber"><font style="font-size:11px;"><b>Desc: </b></label><span id="sel_user"><input type="text" class="small" name="PartNumber[]" size="20"></span>
<label for="AmountOrdered"><font style="font-size:11px;"><b>Qty: </b></label><input type="text" required="required" class="small" name="AmountOrdered[]" size="5">
<label for="build"><font style="font-size:11px;"><b>Build#: </b></label><input type="text" required="required" class="small" name="build[]" size="10">
<label for="unit_cost"><font style="font-size:11px;"><b>Unit$: </b></label><input type="text" class="small" name="unit_cost[]" size="10">
<label for="total_cost"><font style="font-size:11px;"><b>Total$: </b></label><input type="text" class="small" name="total_cost[]" size="10">
<label><font style="font-size:11px;"><b>Date: </b></label><input type="text" class="emp_from" name="ExpectedDate[]" size="10">
</td>
</tr>
</table>
</span>
</div>
</div>
<div id="items">
</div>
我怀疑每个文本输入都没有唯一的ID,或者如果有,那么除了第一行之外,没有为任何其他行设置JS处理程序。每个表单元素都应该有一个唯一的ID,或者是数组的一部分。每个字段还必须具有唯一的名称,或者是数组的一部分,以便发布(ajax或其他)。在添加自动填充下拉列表之前,我能够动态添加几行(下拉列表过去是我要填写的文本框),并且能够将每个文本框中的所有数据传递到另一个页面,该页面将把所有行插入数据库表中。那么,当这种情况发生时,它不是已经在做你所描述的所有这些领域的事情了吗?我认为将文本框更改为下拉框仍然可以让表单以相同的方式处理。添加输入元素和访问它是完全不同的。此外,在添加元素后,如果需要事件处理程序,则必须在将元素添加到DOM后分配它。如果添加元素时未为其分配唯一ID,则该元素将没有唯一ID。对于任何事件处理程序都一样。
$sql = "SELECT DISTINCT ProductName, id FROM table_name GROUP BY ProductName ORDER BY ProductName ASC";
$sql_result = mysql_query($sql,$connection);
while ($row = mysql_fetch_array($sql_result))
{
$id = $row['id'];
$ProductName = $row['ProductName'];
echo"<option value=\"$id\">$ProductName</option>";
}
mysql_close($connection);
<label for="PartNumber"><font style="font-size:11px;"><b>Desc: </b></label><span id="sel_user"><input type="text" class="small" name="PartNumber[]" size="20"></span>
<label for="AmountOrdered"><font style="font-size:11px;"><b>Qty: </b></label><input type="text" required="required" class="small" name="AmountOrdered[]" size="5">
<label for="build"><font style="font-size:11px;"><b>Build#: </b></label><input type="text" required="required" class="small" name="build[]" size="10">
<label for="unit_cost"><font style="font-size:11px;"><b>Unit$: </b></label><input type="text" class="small" name="unit_cost[]" size="10">
<label for="total_cost"><font style="font-size:11px;"><b>Total$: </b></label><input type="text" class="small" name="total_cost[]" size="10">
<label><font style="font-size:11px;"><b>Date: </b></label><input type="text" class="emp_from" name="ExpectedDate[]" size="10">
</td>
</tr>
</table>
</span>
</div>
</div>
<div id="items">
</div>
$host = "localhost"; /* Host name */
$user = "username"; /* User */
$password = "password"; /* Password */
$dbname = "db_name"; /* Database name */
$con = mysqli_connect($host, $user, $password,$dbname);
// Check connection
if (!$con) {
die("Connection failed: " . mysqli_connect_error());
}
$departid = $_POST['depart'];
$sql = "SELECT id, PartNumber FROM table_name WHERE id = ".$departid;
$result = mysqli_query($con,$sql);
$users_arr = array();
while( $row = mysqli_fetch_array($result) ) {
$PartNumber = $row['PartNumber'];
$userid = $row['id'];
$users_arr[] = array("PartNumber" => $PartNumber);
}
// encoding array to json format
echo json_encode($users_arr);