Jquery监听后台ajax加载后输入字段的变化


Jquery listen to changes on input field after a background ajax load

这里有两个Jquery函数,第一个函数根据用户下拉选择选项执行ajax加载,然后根据返回的值更改输入字段。这很好。

//perform a background ajax load and get the allocation available if any
$("#ministry").change(function(){
    var ministry=$("#ministry").val();
    var url="/VoteBook/ministry.php?mini="+ministry;
    $.get(url, function(data,status){
        $(".alloc").val(data);
    })
});

然后第二个函数应该监听上面指定的输入字段的变化,如果输入字段的值为0,它应该禁用表单中的所有输入字段。看起来,"jquery on change"函数并没有通过ajax检测输入字段的变化。如有任何帮助,不胜感激。

//disable all inputs on allocation field change
$(".alloc").change(function(){
    var allocation=$(".alloc").val();
    if(allocation==0){
        $("#add_vote_form :input").attr('disabled', true);
    }
});

问题是通过编程方式更改input元素的值不会引发事件。要获得所需的行为,您可以手动trigger()事件:

$.get(url, function(data,status){
    $(".alloc").val(data).trigger('change');
})