我正在尝试创建一种在调用时将数据发布到 mysql 的方法。唯一的问题是我无法弄清楚如何从字段中传递正确的信息,因为它们的 ID 是在运行时创建的。
这些字段是使用 while 循环创建的,双击它们变得可编辑,然后在模糊时它们应该恢复到以前的状态并发布对数据库所做的任何更改。(这是我第一次写这些我希望我很清楚!)
我的JS
function disablefarm(farmid) {
$(function() {
var farmstr = farmid.replace(/[^0-9\.]+/g, ""),
farmID = $("#farm" + farmstr + "").val(),
farmName = $("#farmn" + farmstr + "").val(),
fieldarray = $([]).add(farmName).add(farmID);
$("input:text[id=" + farmid + "]").attr('readonly', 'readonly');
$("input:text[id=" + farmid + "]").addClass("noshow");
var epost_url = "editfarm.php";
var epost_data = fieldarray.serialize();
$.post(epost_url, epost_data, function(response) {
alert(response);
});
});
}
html 元素是在输出的 while 循环中创建的
echo "<td name='farmL' ><input type='hidden' value='$id' id='farm$id' /> <input type='text' id='farmn$id' value='$fname' readonly='readonly' class='noshow' size='33' ondblclick='enablefarm(this.id)' onblur='disablefarm(this.id)' />";
最后 editfarm.php 看起来像
if (filled_out($_POST)){
$efarmID = check_input ($_POST['farmID']);
$efarmName = check_input ($_POST['farmName']);
}
else{
echo "not committed";
}
$query = "UPDATE farm_name
SET farmName='".$efarmName."'
WHERE farmID=".$efarmID.";";
$result = mysql_query($query);
if(!$result)
{
echo"".stripslashes($efarmName)." not updated";}
else{
echo"".stripslashes($efarmName)." updated";
}
HTML 输出如下所示
<tr id='row27'>
<td name='farmL'>
<input type='hidden' value='27' id='farmid27' />
<input type='text'
id='farmn27'
value='111 Gary farms'
readonly='readonly'
class='noshow'
size='33'
ondblclick='enablefarm(this.id)'
onblur='disablefarm(this.id)' />
</td>
</tr>
谢谢!