我有一个包含选择字段id =“projects”的表单,在更改后显示(使用js)隐藏的选择字段“任务”,通过查询dB动态填充所选项目的任务。然后,用户可以输入从选择中的proj_id,task_id组合更新的小时数。
echo '<div id="dynform"><div class="rowhours"><select id="projects" name="project">';
if(mysqli_num_rows($res)==0)
echo '<option>No Projects assigned</option>';
else{
echo '<option value="0">Project - Choose one</option>';
while (list($proj_id, $title) = mysqli_fetch_row($res))
{
echo "<option value=$proj_id>$title</option>";
}
}
echo '</select></div><input type="button" id="add"></div>';
<select name="task" class="tasks" onchange="showOther(this, 'new');" onmouseover="showOther(this, 'new');"></select><br>
function showOther(fieldObj, otherFieldID) //Function displays text box for creating a new task on Addhours.php
{ //for the selected project when "Enter New Task" option chosen
var fieldValue = fieldObj.options[fieldObj.selectedIndex].value;
var otherFieldObj = document.getElementById(otherFieldID);
otherFieldObj.style.visibility = (fieldValue=='other') ? '' : 'hidden';
return;
}
现在我添加了一个“添加行”按钮,这会多次生成相同的表单。
<input type="button" value="Add Row" id="add">
jquery used to add rows: $(document).ready(function () {
$('#add').click(function () {
$('.rowhours').clone().appendTo('#dynform');
});
});
现在,当我更改任何行的项目时,任务选择的所有行的任务都会受到影响,我知道这是因为它们具有相同的Id。
问题是如何使它们具有不同的Id并且能够使用jquery以相同的方式单独使用它们。另外截至目前我只是使用if(isset($ _ POST ['submit'])进行更新)现在我可以对多行使用什么?
我在这里有一个工作示例http://fracktal.in/tms/addhours.php
我基本上正在寻找一个项目[]和任务[],我不知道如何使用jquery访问或获取表单上提交的值以更新dB
答案 0 :(得分:0)
添加rowhours
后访问最后一个元素并更改ID
$(".rowhours).last().attr("id","newId");
答案 1 :(得分:0)
你可以轻松地使用数组,只需命名你的字段项目[](不是项目),然后用$ _POST ['project'] [0],$ _POST ['project'] [1]等来访问它们。 / p>
$total = count($_POST['project']);
foreach($_POST['project'] as $num=>$project) {
// do your code here, send to DB or whatever
// $project contains value of input (or select) and $num contains number of row
}