0

我正在使用CodeIgniter,并且在选择下拉式表单OnChange Works时,我将获得第二个字段OK(Country-> City)。当我提交有错误的表单时,页面会重新加载并显示错误,但我的 onchange 停止工作。关于发生了什么的任何想法?嗯,这就是我正在做的。用户进入主页并填写表格,onchange 正在工作。用户然后提交带有错误的表单,我检查验证并使用相同的 onchange 函数加载新页面(注册)。我试图将函数名称(getLocal)更改为另一个名称,但结果是一样的。尝试使用 live.("change", getLocal) 结果是一样的,注册页面没有触发...

 
function getLocal(){
    $("#city").load("home/ajaxlocal", {country: $(this).val()} );
   //alert($(this).val());

    return false;
}

..............

$js = 'id="country"';
    
    $(document).ready(function() {
    $("#country select").bind("change", getLocal);
        });
    
td echo form_label('Country :', $country); 
td id="country">echo form_dropdown('country', $country,$ct,$js);
4

1 回答 1

1

如果您没有重新加载页面,而是使用 AJAX 重新加载元素,那么如果您在 ready() 函数中指定它们,jquery 将不会绑定到这些新元素。

$(document).ready(function() {
    $("#country select").bind("change", getLocal);
});

这是加载这个 onload - 尝试使用 .live()

http://api.jquery.com/live/

此方法是用于将事件处理程序附加到元素的基本 .bind() 方法的变体。当 .bind() 被调用时,jQuery 对象引用的元素会附加到处理程序;稍后引入的元素不会,因此它们需要另一个 .bind() 调用。

于 2010-07-06T04:50:46.883 回答