【问题标题】:Lost OnChange after form Validation表单验证后丢失 OnChange
【发布时间】:2010-07-06 04:09:17
【问题描述】:

我正在使用码rigner,选择下拉表单onchange works,我得到了第二个字段确定(国家 - >城市)。 当我提交有错误的表单时,页面会重新加载并显示错误,但我的 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);

【问题讨论】:

  • 请说明您的不同代码 sn-ps 使用哪种语言。从 javascript 跳转到与一些 html 混合的 ci_php 有点令人困惑!

标签: validation forms codeigniter onchange


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 嗯,这就是我正在做的事情。用户进入主页并填写表格,onchange 正在工作。用户然后提交带有错误的表单,我检查验证并使用相同的 onchange 函数加载新页面(注册)。我试图将函数名称(getLocal)更改为另一个名称,但结果是一样的。尝试使用 live.("change", getLocal) 结果一样,注册页面没有触发
  • 您能否向我们发布您的主页和注册页面的完整代码,以及您的 ci 控制器和您的 jquery 脚本?很难确切地看到目前正在发生的事情......
  • 好吧,现在我觉得自己很愚蠢......只是忘记在注册页面上将 id="country" 添加到这一行:td id="country">echo form_dropdown('country', $国家,$ct,$js);抱歉耽误您的时间:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
  • 2020-09-08
相关资源
最近更新 更多