js中给select或text赋值,无法触发onchang事件,如何解决

1,049 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

以下是开发中遇到过的问题,我们经常会遇到用下拉框选择对应的值的场景,有时候又有多个下拉框联动选择,这就需要监听前一个选择的赋值来做后续动作。又例如,用户打开门户网,在页面加载完成以后,默认是自己现在所处的省份,需要触发一个onChange事件,在js中用document.getElementById("province").value="广东";直接给select或text赋值是不行的

一、题目描述:

select 或text的onchange事件需要手动(通过键盘输入)改变select或text的值才能触发,如果在js中给select或text赋值,则无法触发onchang事件

二、思路分析:原理都是监听元素的change事件,来达到赋值的目的,以下是JavaScript和jq的处理办法

方法一: 若要能在js赋值的时候也可以触发则要用到addEventListener;

方法二: 若要能在jq赋值的时候也可以触发则用trigger;

demo1:

{document.getElementByIdx_x(‘msg’).innerHTML=’输入的文字长度为:’+document.getElementByIdx_x(‘txt’).value.length;\
}
document.getElementByIdx_x(‘txt’).addEventListener(“change”,handle,false);

demo2:

  <option value="RadarMap">气象雷达图</option>\
  <option value="CloudPicture">卫星云图</option>\
  <option value="SeaPlatform">能见度图</option>\
   <option value="rainVolume">降雨量图</option>\
   <option value="rainVolume">降雨量图</option>\
</select>

$("#weather-category").val(linkageConfig.InitWeatherType).trigger('change', 'typeChange');//其中的typeChange 为trigger事件传的参数,用于自定义事件非常实用

以上两种方法测试过有效,在狐火浏览器、谷歌浏览器、IE10浏览器上测试都没有问题