在更改事件时不会触发选择列表

时间:2012-05-14 09:44:54

标签: javascript jquery html ajax cascadingdropdown

我似乎无法触发jQuery以及针对county_id选择列表的更改事件。我已经尝试了多个代码片段,没有人会触发更改。有什么想法吗?

HTML:

<select id="county_id" name="county_id">
    <option value=""></option>
    <option value="1">Somewhere</option>
    <option value="2">Somewhere else</option>
</select>

<select id="vice_county_id" name="vice_county_id"></select>

JS:

$(function(ready) {
    $("#county_id").change(
            function() {
                $("#vice_county_id").html("");
                var co_id = $("#county_id > option[@selected]").attr("value");
                if (co_id != 0) {
                    $.getJSON('./vice_county_web_service.php?co_id=' + co_id,
                            function(data) {
                                $.each(data, function() {
                                    $("#vice_county_id").append(
                                            $("<option></option>").val(
                                                    this['value']).html(
                                                    this['name']));
                                });
                            });
                }
            });

});

6 个答案:

答案 0 :(得分:0)

足以获得选择框的价值

var co_id = $("#county_id").val();

您应该使用on()

$('#county_id').on('change', function() {
  //....
  var co_id = $("#county_id").val(); 
});

答案 1 :(得分:0)

尝试:

$(document).ready(function(){
    $("#county_id").change(function() {
        $("#vice_county_id").html("");
        var co_id = $(this).val();
        if(county_id != 0) {
            $.getJSON('./vice_county_web_service.php?co_id=' + co_id,function(data) {   
                $.each(data, function() {
                    $("#vice_county_id").append($("<option></option>").val(this['value']).html(this['name']));
                });
            });
        }
    });
})

答案 2 :(得分:0)

更改`var co_id = $(“#county_id&gt;选项[@selected]”)。attr(“value”);'到'var co_id = $(“#county_id&gt;选项:已选中”)。attr(“value”);'

http://jsfiddle.net/XvRsV/

答案 3 :(得分:0)

事件正在触发,但这行代码失败:

var co_id = $("#county_id > option[@selected]").attr("value");

...因为那是一个无效的选择器。在浏览器的JavaScript控制台中,您应该看到Syntax error, unrecognized expression: [@selected]

jQuery很乐意为您提供价值,只需使用val

var co_id = $("#county_id").val();

Live example | source

答案 4 :(得分:0)

您的代码工作正常意味着更改事件正由代码正确处理请参阅此link

$(function(ready){
            $("#county_id").change(function() {
                $("#vice_county_id").html("test");
                var co_id= $("#county_id").attr("value");
                alert('Value : ' +co_id); 
            if(co_id != 0) {
                $.getJSON('./vice_county_web_service.php?co_id=' + co_id,function(data) {    
                    $.each(data, function() {
                        $("#vice_county_id").append($("<option></option>").val(this['value']).html(this['name']));
                    });
                });
            }
        });

    });​

仅更改此行,

var co_id = $(“#county_id”)。attr(“value”);

检查您的ajax呼叫是否正常

答案 5 :(得分:-1)

 <select id="county_id" name="county_id" onchange="ChangeCountry();">

function ChangeCountry()
{
   var _countryId = $('#county_id').val();
}