我使用<cfselect>
的bind属性绑定加载状态列表。该绑定与另一个加载关联城市的<cfselect>
相关联。这两个工作正常。
现在我需要添加第三个选择列表。当第一个cfselect
被更改时,我想将两个cfselect
的值传递给jQuery,以加载第三个列表。第三个列表是简单的html <select>
。这基本上是一个旧的继承代码,所以我知道这两件事的混合是一个坏主意。
所以这是正在发生的事情。第一次打电话没问题。它传递了正确的cityid
。下次我改变状态时,它的状态通过cfselect改变,但是它传递旧的cityid
而不是新的cfselect
。这会导致第三个下拉列表出现问题,但不会加载结果。
所以基本上结构是这样的:
cfselect
绑定加载状态stateid
绑定基于传递的select
$(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})
});
获取前两个cfselect的州和城市值以加载邮政编码现在是jQuery代码:
{{1}}
我希望我提出一个明确的问题。
答案 0 :(得分:5)
由于你已经使用jQuery并且可以使用它,所以完全撕掉<cfselect>
并使用vanilla <select>
和jQuery的.ajax()
方法完成所有操作。这样就可以消除冲突。
你基本上遇到了使用ColdFusion的UI向导的根本缺陷:它们编写得很糟糕,并且根本没有与其他要求互操作。 <cfselect>
并非旨在与其他JS技术一起实施。它基本上是一个进化的死胡同(死亡发生在大约十年前)。
以下是解除<cfselect>
出去的一些指导:“CFSELECT-CHAINED”