关于select框下设置了disabled导致前台有值,但后台接收不到的情况记录
一、背景
在项目(传统JSP)需要改版页面的时候,进入页面前先获取后台传过来的数据,但一部分数据需要设置不可编辑,select框是不支持readonly的,故将select加disabled,此时则引起了一些问题,后台取不到加了disabled属性的值。
二、解决方案
可能由于自己的前端偏弱(其实是以前没有好好学习),来看看W3C对disabled的说明
定义和用法:
disabled 属性规定应该禁用 input 元素。
被禁用的 input 元素既不可用,也不可点击。可以设置 disabled 属性,直到满足某些其他的条件为止(比如选择了一个复选框等等)。然后,就需要通过 JavaScript 来删除 disabled 值,将 input 元素的值切换为可用。
注释:disabled 属性无法与 一起使用。
禁用了xx元素。。。所以导致传过去的是一个空值。可以有以下几种解决方案:
1、后台传过来的值只需要一个即可,说白了根据需要切割数组或List集合,下拉也只有一个值
2、在提交的时候将disabled属性remove掉((加载页面的时候设置表单属性disabled=true,提交表单的时候设置表单属性disabled=false) )
$("[disabled]").each(function() {//移除disable,后台方可取值 if (parseInt($(this).val()) != -1) { $(this).attr("disabled", false); } });
3、在页面增加一个隐藏域,在提交的时候先用js将服务器控件的值赋值给隐藏域,后台获取隐藏域的值