Html表单提交 - 未发送ajax生成的下拉值

时间:2009-05-01 12:48:22

标签: php html ajax

我在html / smarty模板代码中嵌入了一个表单。在表单内部有一个下拉框,其中包含从db填充的选项。如果你改变一个选项,它会通过onChange事件调用一个php脚本,使用ajax创建/填充2个下拉列表。这部分工作正常,但如果您提交整个表单(涉及原始下拉列表和2个其他动态创建的表单),如果有2个动态创建的下拉列表,则键值对不会发送到浏览器,尽管它们在内部换句话说,它只发送包含模板本身的值,而不是通过ajax生成“txtHint1”的值。

日Thnx

html / template form:

<table border="0" width="600">
<tr>
<form name='form1' id='form1' method='get' action=''>
<td width="80"><h4><b>Source 1:</b></h4></td>
<td>
<select name='host_selection' onChange="showDatet(this.value,'txtHint1')">
{foreach from=$hostlist item="entry"}
<option value={$entry.host}>{$entry.host}</option>
{/foreach}
</select>
</td>
<td>
<div id="txtHint1">
</div>
</td>
</tr>
<tr>
<td>
<button type='submit' name='Submit'>COMPARE!</button>
</td>
<td>
<input type='hidden' name='op' value='hid' />
</td>
</form>
</tr>
</table>

通过ajax调用的PHP代码的一部分:

echo "<select name='datet_selection" . $fieldID . "'>Test</option>";
foreach ($x->sql->record as $temp) {
    echo "<option value='" . $temp['datet'] . "'>" . $temp['datet'] . "</option>";
}
echo "</select>";   

2 个答案:

答案 0 :(得分:1)

这可能无法解决整个问题,但您动态渲染的下拉列表似乎不是很好。变化:

echo "<select name='datet_selection" . $fieldID . "'>Test</option>";

echo "<select name='datet_selection" . $fieldID . "'><option>Test</option>";

答案 1 :(得分:0)

我认为你还需要...所以你会想要:

echo "<select name='datet_selection" . $fieldID . "'><option>Test</option></select>";