0

我正在使用 CodeIgniter,并且在使用 JQuery 在两个下拉列表中设置 onchange 时遇到问题,代码如下:

<?
function generateSelect($name = '', $options = array(), $code) {
    $html = '<select name="'.$name.' id="'.$name.'"">';
    foreach ($options->result_array() as $row) {
        if ($row[$name] == $code) {
        $html .= '<option value='.$row[$name].' selected>'.$row[$name].'</option>';
        } else {
        $html .= '<option value='.$row[$name].'>'.$row[$name].'</option>';
        }
    }
    $html .= '</select>';
    return $html;
}

echo '<div id="actype"><table cellpadding=2 cellspacing=2 border=1><tr><td>AC TYPE</td><td>'.generateSelect('actype', $query_1, $actype).'</td>';

echo '<div id="acreg"><tr><td>AC REG</td><td>'.generateSelect('acreg', $query_2, $acreg).'</td></div></table>';
?>

这是javascript:

<script type="text/javascript">      
$(function() {           
// navigate to page on click event           
$('#actype').bind('change', function() { goToPage(); } );      
$('#acreg').bind('change', function() { goToPage(); } );      
});       

function goToPage() {
location.href = 'http://localhost/CAMP/CI/index.php/blog/show_package/'+$("#actype :selected").val()+'/'+$("#acreg :selected").val();
} 
</script> 

So when the first dropdown is selected, the page will add some uri segment. 并基于该段,将运行一些查询,然后生成第二个下拉列表。

The problem is when the second dropdown is selected, the page adds "undefined" as new segment. 我认为页面无法获取第二个下拉列表的选定值。

请帮忙。

4

2 回答 2

0

好吧,很难知道你是否真的第一次选择了一个元素。

if ($row[$name] == $code) {
    $html .= '<option value='.$row[$name].' selected>'.$row[$name].'</option>';
}

如果您没有将值传递给 $code 或者此处没有匹配项,则您的 jQuery ":selected" 调用将没有有效匹配项。给您留下一个“未定义”的价值。

$("#actype :selected").val()

或者

$("#acreg :selected").val()

如果您确实有匹配项,但仍然无法正常工作,请尝试将默认选择更改为 selected="selected"

$html .= '<option value='.$row[$name].' selected="selected">'.$row[$name].'</option>';
于 2011-05-02T19:50:16.157 回答
0

此行中缺少一个 ":

$html = '<select name="'.$name.'" id="'.$name.'"">';

包装值属性也是明智的,例如:

$html .= '<option value="'.$row[$name].'">'.$row[$name].'</option>';
于 2011-04-29T07:50:31.133 回答