我正在使用<cfselect>
的绑定(bind)属性来绑定(bind)加载状态列表。该绑定(bind)与另一个 <cfselect>
相关联。加载相关城市。这两个工作得很好。
现在我需要添加第三个选择列表。当第一个cfselect
改变了,我想传递cfselect
两者的值到 jQuery,加载第三个列表。第三个列表是一个纯 html <select>
。这基本上是一个旧的继承代码,所以我知道混合两者是一个坏主意。
所以这就是正在发生的事情。第一次通话进展顺利。它通过了正确的cityid
。下次我更改状态时,它的状态通过 cfselect 更改,但它传递了旧的 cityid
而不是新的。这会给第三个下拉列表带来问题,它不会加载结果。
所以基本上结构是这样的:
- 第一
cfselect
绑定(bind)加载状态 - 第二个
cfselect
绑定(bind)根据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>
完全摆脱并用 Vanilla 做所有事情<select>
和 jQuery 的 .ajax()
方法。这样就可以消除冲突。
您基本上遇到了使用 ColdFusion 的 UI 向导的基本缺陷:它们编写得很差,并且根本无法与其他需求很好地互操作。 <cfselect>
并非旨在与其他 JS 技术结合实现。这基本上是一个进化的死胡同(这个死胡同大约发生在十年前)。
这里有一些关于删除<cfselect>
的指导输出:“CFSELECT-CHAINED”
关于javascript - cfselect 绑定(bind)和 jquery 事件冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544538/