我正在使用<cfselect>的bind属性来绑定加载状态列表。该绑定与另一个加载关联城市的<cfselect>关联。那两个工作正常。

现在,我需要添加第三个选择列表。当第一个cfselect更改时,我想将两个cfselect的值传递给jQuery,以加载第三个列表。第三个列表是纯HTML <select>。这基本上是一个旧的继承代码,所以我知道将两者混合是一个坏主意。

所以这就是正在发生的事情。最初的通话效果很好。它通过正确的cityid。下次更改状态时,其状态将通过cfselect进行更改,但它会传递旧的cityid而不是新的。这为第三个下拉菜单创建了一个问题,该下拉菜单不会加载结果。

所以基本上结构是这样的:


第一个cfselect绑定加载状态
第二个cfselect绑定根据传递的stateid加载城市
第三个select从前两个cfselect获取州和城市值以加载邮政编码


现在,jQuery代码:

$(document).on('change',function() {
   var a = $("#cfselect1").val();
   /*
      The next line seems to be a problem area. It always fetches
      the old cityid. Maybe due to the ext js bind is loading
      later than jquery being first
   */
   var b = $("#cfselect2").val();
   $ajax({ajax code here})
});


我希望我已经阐明了一个问题。

最佳答案

因为您已经对jQuery很熟悉并且可以使用它,所以请完全撕掉<cfselect>并使用普通的<select>和jQuery的.ajax()方法完成全部工作。这样您就可以消除冲突。

您基本上已经遇到了使用ColdFusion的UI向导的基本缺陷:它们编写得很差,并且根本无法与其他需求互操作。 <cfselect>不能与其他JS技术一起实现。从根本上讲,这是一个进化的死胡同(死胡同发生在大约十年前)。

这是一些删除<cfselect>的指导:“ CFSELECT-CHAINED

09-11 14:13