用javascript / jquery替换选择输入

时间:2015-10-01 13:06:51

标签: javascript php jquery html codeigniter

我有一个页面,其中有一个表单,我有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的值。

1 个答案:

答案 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>