Вам необходимо изменить этот код:
$("#selectestate").bind("change",function(){
к этому:
$("#selectestate select").bind("change",function(){
Вы запрашиваете значение <td id="selectstate">
... которое, конечно, null
. #selectstate select
загружает фактический элемент <select>
, который вы ищете, что позволит вам получить его значение.
Вы также можете изменить $("#selectcity")
на $("#selectcity select")
, чтобы избежать той же проблемы в вашей анонимной функции.
Наконец, ваше оповещение работает так, как ожидалось. {}
определяет объект в Javascript. Итак, вы оповещаете объект, содержащий один атрибут. Всего alert($(this).val());// Should show the value
Если это все еще не помогает, это потому что:
A) Ваш URL неверный
или
Б) Что-то не так с функцией php, вызываемой results/ajaxcity
EDIT:
Хлопает головой : Я должен был поймать это. В вашем коде у вас есть эта функция:
1. function getState(){
2. $("#selectestate select").bind("change",function(){
3.
4. $("#selectcity select").load("results/ajaxcity", {stat: $(this).val()} );
5. alert($(this).val());
6. });
7. return false;
8. }
Ваш сгенерированный HTML выглядит примерно так:
<select name="state" id="selectstate" onChange="getState();">
ПРОБЛЕМА: Когда вы впервые используете <select>
, когда вызывается ваша функция, и jQuery привязывает анонимную функцию к событию изменения для select (строка # 2), которое будет выполняться каждый раз событие изменения начинается с этого выбора , с этого момента . Каждый раз, когда вы выбираете раскрывающийся список, новая анонимная функция связывается строкой # 2, и выполняются все функций, которые в данный момент связаны с раскрывающимся списком. (Таким образом, если вы используете раскрывающийся список N раз, функция «change» сработает N-1 раз.)
РЕШЕНИЕ: Используйте $(document).ready()
до bind вашу функцию. Ваш реструктурированный код будет выглядеть так:
<script type="text/javascript">
function getState(element){
$("#selectcity select").load("results/ajaxcity", {stat: $(element).val()} );
alert($(element).val());
return false;
}
</script>
//... snip ...
<?php $js = 'id="selectstate"';?>
//... snip ...
<script type="text/javascript">
$(document).ready(function() {
$("#selectestate select").bind("change", getState);
});
</script>