我正在使用<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”