我有一个页面,其中有一个表单,我有2个选项,当您在第一个选择中选择值X
时,它将更改第二个选择。
我试着这样做:
<script language="JavaScript" type="text/JavaScript">
function makeRequestObject() {
var xmlhttp = false;
try {
xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try {
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function replace2(id) {
var xmlhttp = makeRequestObject();
var file = 'http://example.com/index.php/result/new_select/'
xmlhttp.open('GET', file + id, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var content = xmlhttp.responseText;
if (content) {
document.getElementById('replace').innerHTML = content;
//$( "div.test" ).replaceWith(content);
}
}
}
xmlhttp.send(null)
}
</script>
我的形式是:
<th id="replace">
<?php
$fruit_options = array();
$fruit_options[-1] = 'Select ALL';
foreach ($tests as $fruit) {
$fruit_options[$fruit->ID] = $fruit->Nume;
}
echo form_dropdown('test', $fruit_options, $fruit->ID, $fruit->Nume);
?>
</th>
一切正常,当我选择第一个下拉列表时,第二个选择将被修改(我称之为:echo form_dropdown('test1', $fruit_options, -1, 'onchange="replace2(this.value)"');
)
但是当我按下&#34;提交&#34;时,控制器将看不到帖子test
的值。
在result/new_select/id
我有这样的事情:
<?php
$fruit_options = array();
$fruit_options[-1] = 'Select ALL';
foreach ($tests as $fruit) {
$fruit_options[$fruit->ID] = $fruit->Nume;
}
echo form_dropdown('test', $fruit_options, $fruit->ID, $fruit->Nume);
?>
有人知道为什么我的代码不起作用,或者更好的方法是什么?
LE
<form action="http://example.com/index.php/test/query" method="post" accept-charset="utf-8">
<table>
<th>
<select name="test1" onchange="replace2(this.value)">
<option value="-1" selected="selected">Select ALL</option>
<option value="515">515</option>
<option value="252">252</option>
<option value="327">327</option>
<option value="409">409</option>
</select>
</th>
<th id="replace">
<select name="test" 315>
<option value="-1">Select ALL</option>
<option value="1">1</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="315" selected="selected">315</option>
</select>
</th>
<th>
<input type="submit" name="mysubmit" value="Search!" />
</th>
</table>
</form>
在控制器中我看到test1
的值,但我看不到test
的值。
答案 0 :(得分:1)
这里的问题似乎是你的表结构。您忘记了表格需要行<tr>
和列<td>
,因此当JS附加任何HTML时,它会将它们放在form
之外,因此您的表单请求不会发送正确的POST信息。
像这样重组你的表:
<form method="post">
<table>
<tr>
<td>
<?php
$fruit_options = array();
$fruit_options[-1] = 'Select ALL';
foreach ($tests as $fruit) {
$fruit_options[$fruit->ID] = $fruit->Nume;
}
echo form_dropdown('test1', $fruit_options, -1, 'onchange="replace2(this.value)"');
?>
</td>
</tr>
<tr>
<td id="replace">
</td>
</tr>
<tr>
<td>
<input type="submit"/>
</td>
</tr>
</table>
</form>