Adobe ColdFusion如何获取下拉框选中值存入变量且不跳转页面
最优实现方案
根据你的需求(无页面跳转、无需表单提交、仅存储选中值),分两种使用场景选择方案即可:
场景1:存储的变量仅在前端JS逻辑中使用
不需要用到bind也不需要submit,直接给cfselect加onchange监听事件存储选中值即可,实现成本最低:
修改后的代码如下:
<h3>Car Names</h3> <cfquery name="carbrands" > SELECT * FROM carcompany WHERE cartype_id = 6 </cfquery> <cfform name="mycars" action="?????.cfm"> <cfselect name="carbrandsearch" query="carbrands" value="car_name" display="car_name" <!-- 新增onchange事件监听选择动作 --> onchange="saveSelectedCar(this.value)" > </cfselect>
配套JS代码:
// 全局变量存储选中值,后续前端逻辑直接调用即可 let selectedCarBrand = ''; function saveSelectedCar(brandName) { selectedCarBrand = brandName; // 如果你需要在选择后立刻触发其他前端逻辑,也可以在这里追加代码 }
场景2:存储的变量需要供后续服务端CF查询使用
如果需要把选中值同步到服务端的作用域(比如session、request)给后续CF查询用,不需要跳转页面,两种方案可选:
- 沿用场景1的onchange监听,在JS函数里加一段Ajax请求,把选中值传给CF的接口文件存储到对应作用域即可
- 直接用CF内置的
bind属性实现无刷新同步,修改cfselect标签如下:
<cfselect name="carbrandsearch" query="carbrands" value="car_name" display="car_name" bind="cfc:你的CFC文件路径.saveSelectedBrand({carbrandsearch})" bindonload="false" > </cfselect>
你只需要在对应CFC文件里新增一个saveSelectedBrand方法,把传入的选中值存储到你需要的服务端作用域即可,全程无刷新无需提交表单。
内容的提问来源于stack exchange,提问作者Codeallday
相关产品推荐
相关产品推荐

