后台项目中经常会用到下拉列表或者多选框,可能因为权限控制或者其它原因,要求在审核或则修改时禁用多选框或者下拉列表,使用$("#id").attr("disabled",true)可以禁用下拉列表或者多选框,但是这样会带来新的问题,被禁用下拉列表无法将数据传到服务端,如何做到既能禁用又能够将数据传到后台呢?提供一下几个思路:
1.正常采用$("#id").attr("disabled",true)的方式,但是在提交之前一定要使用$("#id").attr("disabled",false)将被限制属性接触禁用,一般form表单提交之前,都需要对比属性参数进行校验,可以在校验函数中把被禁用的属性解禁。
2.正常采用$("#id").attr("disabled",true)的方式,一般需要禁用的场景都发生在从服务端拿到数据进行展示时,所以可以使用$("#id").attr("disabled",true)的方式限制属性,同时隐藏一个期副本,用于存放被限制的数据,这样就可以把数据传到服务端了。
3.采用jquery的一些事件组合达到伪禁用的效果,首先采用$("#id").attr("readonly","readonly")的方式使属性看起来不可点,但是这是还是可以进行选择的,采用鼠标事件 onMouseDown + onMouseMove将数据还原,以达到伪禁用的效果,不过采用这种方式需要把选中的值隐藏在属性域中。