我已经加载了一个表格。在表单中有一个选择区域,当更改时调用 ajax 查询来加载和显示第二级选择区域
$('.subjectareaid').change (function ()
{
var selected = $(this);
var ssindex = selected.closest("tr").index()+1;
var putid = '#subsub'+ssindex;
var pdata = 'subjectareaid='+selected.val();
$.ajax({
type : "POST",
cache : false,
url : "a_subsubject.php",
data : pdata,
success: function(data) {
$(putid).html(data);
$(putid).removeClass('hideme');
}
});
});
a_subsubject.php 文件创建要返回的选项列表
<option value=".$row['subsubjectid']."> ".$row['subsubjectname']
修改的 HTML 是一个表格,表格中是行。该行看起来像:
$outline .= "<tr><td>".$oline."Question ".$k."</td><td valign=bottom><select name=dif[".$j."]>".$difsel."</select></td><td valign=bottom><select class=subjectareaid name=sub[".$j."]>".$subsel."</select></td><td valign=bottom><select class=hideme id=subsub".$j." value=subsub[".$j."]><option value=0></select></td></tr>";
其中 $oline 是空白或部分名称,$k 是问题编号,$j 是索引 (1-54),$difsel 是选择语句的选项,$subsel 是选择语句选项,并且设置了第三个选择到一个选项,并用 hideme 类隐藏。此外,它还有一个 ID,允许它使用 a_subsubject.php ajax 调用返回的选项重新填充 HTML。
所有这张表都包裹在一个表格中
<form id=deform1>
提交表单后,将运行以下 jquery:
var formser = $('#deform1').serialize();
var crud = "&crud=scd";
var scorecardid = '&scorecardid='+ escape($('input[name=id]').val());
var pdata = formser+'&action=cru'+crud+scorecardid;
然后将其发送到 ajax 例程,其中 pdata 是传递给 CRUD 程序以更新数据库的数据。
在问题 1、21 和 39 的所有三个选择值中进行选择的结果(从警报中显示)是: {id=1 是接收代码忽略的隐藏字段,因为它被捕获并作为 scorecardid 发送稍后在帖子字符串中}
id=1&dif%5B1%5D=0&sub%5B1%5D=2&dif%5B2%5D=0&sub%5B2%5D=0&dif%5B3%5D=0&sub%5B3%5D=0&dif%5B4%5D=0&sub%5B4%5D= 0&dif%5B5%5D=0&sub%5B5%5D=0&dif%5B6%5D=0&sub%5B6%5D=0&dif%5B7%5D=0&sub%5B7%5D=0&dif%5B8%5D=0&sub%5B8%5D=0&dif% 5B9%5D=0&sub%5B9%5D=0&dif%5B10%5D=0&sub%5B10%5D=0&dif%5B11%5D=0&sub%5B11%5D=0&dif%5B12%5D=0&sub%5B12%5D=0&dif%5B13% 5D=0&sub%5B13%5D=0&dif%5B14%5D=0&sub%5B14%5D=0&dif%5B15%5D=0&sub%5B15%5D=0&dif%5B16%5D=0&sub%5B16%5D=0&dif%5B17%5D= 0&sub%5B17%5D=0&dif%5B18%5D=0&sub%5B18%5D=0&dif%5B19%5D=0&sub%5B19%5D=0&dif%5B20%5D=0&sub%5B20%5D=0&dif%5B21%5D=3&sub% 5B21%5D=4&dif%5B22%5D=0&sub%5B22%5D=0&dif%5B23%5D=0&sub%5B23%5D=0&dif%5B24%5D=0&sub%5B24%5D=0&dif%5B25%5D=0&sub%5B25%5D=0&dif%5B26%5D=0&sub%5B26%5D=0&dif%5B27%5D=0&sub%5B27%5D=0&dif%5B28%5D=0&sub%5B28%5D=0&dif% 5B29%5D=0&sub%5B29%5D=0&dif%5B30%5D=0&sub%5B30%5D=0&dif%5B31%5D=0&sub%5B31%5D=0&dif%5B32%5D=0&sub%5B32%5D=0&dif%5B33% 5D=0&sub%5B33%5D=0&dif%5B34%5D=0&sub%5B34%5D=0&dif%5B35%5D=0&sub%5B35%5D=0&dif%5B36%5D=0&sub%5B36%5D=0&dif%5B37%5D= 0&sub%5B37%5D=0&dif%5B38%5D=0&sub%5B38%5D=0&dif%5B39%5D=2&sub%5B39%5D=3&dif%5B40%5D=0&sub%5B40%5D=0&dif%5B41%5D=0&sub% 5B41%5D=0&dif%5B42%5D=0&sub%5B42%5D=0&dif%5B43%5D=0&sub%5B43%5D=0&dif%5B44%5D=0&sub%5B44%5D=0&dif%5B45%5D=0&sub%5B45% 5D=0&dif%5B46%5D=0&sub%5B46%5D=0&dif%5B47%5D=0&sub%5B47%5D=0&dif%5B48%5D=0&sub%5B48%5D=0&dif%5B49%5D=0&sub%5B49%5D=0&dif%5B50%5D=0&sub%5B50%5D=0&dif%5B51%5D=0&sub%5B51%5D=0&dif%5B52%5D=0&sub% 5B52%5D=0&dif%5B53%5D=0&sub%5B53%5D=0&dif%5B54%5D=0&sub%5B54%5D=0&action=cru&crud=scd&scorecardid=1
如您所见, dif%5B1%5D=0&sub%5B1%5D=2&dif%5B2%5D=0&sub%5B2%5D=0 这表明 sub[1] 已设置为 2。这导致 subsub1 加载了一组选择选项,然后显示。进行了选择选项(第二项),但表单数据的序列化没有捕获 subsub[1]。[这也与记录 21 和记录 39 一起完成]。
在进行序列化以捕获第三个 jquery 添加的选择值之前,我是否缺少某种“更新”表单的方法?