Как установить замену двух выпадающих в JQuery & CodeIgniter - PullRequest
0 голосов
/ 29 апреля 2011

Я использую CodeIgniter, и у меня есть вопрос в настройке onchange для двух выпадающих с помощью JQuery, вот код:

<?
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> 

Таким образом, когда выбран первый выпадающий список, на страницу будет добавлен некоторый сегмент URI. И на основе этого сегмента будет выполнен какой-то запрос, а затем будет сгенерирован список второго выпадающего списка.

Проблема в том, что при выборе второго раскрывающегося списка на странице добавляется «неопределенный» в качестве нового сегмента. Я думаю, что страница не может извлечь выбранное значение второго выпадающего списка.

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 02 мая 2011

Что ж, трудно понять, действительно ли вы выбираете элемент в первый раз.

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

Если вы не передадите значение в $ code или здесь нет совпадения, у вас не будет действительного совпадения для вашего вызова jQuery ": выбранный". Оставляя вас с неопределенным значением.

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

или

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

Если у вас есть совпадение, но оно все еще не работает, попробуйте изменить выбор по умолчанию на selected = "selected"

$html .= '<option value='.$row[$name].' selected="selected">'.$row[$name].'</option>';
0 голосов
/ 29 апреля 2011

В этой строке отсутствует "

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

Также было бы целесообразно обернуть значения свойств, например:

$html .= '<option value="'.$row[$name].'">'.$row[$name].'</option>';
...