disabled属性对form表单向后台传值的影响

转自:http://blog.csdn.net/qq_38141890/article/details/70080936


近日,在对页面一个字段设置为不可修改时,想到用 disabled 属性,可是在使用之后发现后台无法获取该字段的值。

  <tr>
    <td align="right">临时工位编号:</td>
    <td>&nbsp;<input type="text" name="lsgwbh" value="${userInfo.lsgwbh }"disabled="disabled"/> </td>
  </tr>


  于是搜到了下面的一段(摘抄网上,csdn博主:有名字咧):  


      在form表单里,如果对input加入disabled="disabled"或disabled="true"等属性,form表单提交的时候,就不会传值到后台。

    原因:在HTML页面的某元素加入了disable的属性,那么这个元素只是单单的去给用户去显示,当表单提交时,这个元素不会提交给后台去处理.所以当元素加入了disabled属性,后台是无法得到这个属性的值.

    解决方法:再写一个隐藏属性,一个用于显示,一个用于传值。

   

按照以上思路修改后代码如下:

  <tr>
    <td align="right">临时工位编号:</td>
    <td>&nbsp;<input type="text" name="lsgwbh" value="${userInfo.lsgwbh }" disabled="disabled"/> </td>
  </tr>
  <tr hidden="true">
     <td align="right">临时工位编号:</td>
     <td>&nbsp;<input type="text" name="lsgwbh" value="${userInfo.lsgwbh }" /> </td>
  </tr>

偶然又看到了一篇文章,建议使用 readonly 来代替 disabled 属性,实现同样的效果。修改发现确实可以。


现在来总结 disabled 和 readonly 的区别:(摘抄网上) 

  1. readonly是要锁定这个控件,通过在界面上无法修改他(但是通过javascript可以修改他)。
  2. disabled和readonly有相同的地方也是可以锁定这个控件用户不能改变他的值,但是disabled的更彻底一些,他是要使你完全不能使用他,包括改变他的背景颜色,如果是checkbox则不能选中他。
  3. 所有控件都有disabled 属性,但是不一定有readonly属性,如select 下拉框。点击被readonly掉的按钮照样可以触发事件,但是被disabled掉的按钮就无法使用了不管上面有没有事件。将div设置disabled属性之后,整个div都灰掉了,但是文本框里面还是可以输入内容的。注意:select下拉选择框是没有readonly属性的。

 一般比较常用的情况是:

  • 在某个表单中为用户预填了某个唯一识别代码,不允许用户改动,但是在提交时需要传递该值,此时应该将它的属性设置为readonly。
  • 经常遇到当用户正式提交了表单后需要等待管理员的信息验证,这就不允许用户再更改表单中的数据,而是只能够查看,由于disabled的作用元素范围大,所以此时应该使用disabled,但同时应该注意的是要将submit button也disabled掉,否则只要用户按了这个按钮,如果在数据库操作页面中没有做完整性检测的话,数据库中的值就会被清除。 如果说在这种情况下用readonly来代替disabled的话,若表单中只有input(text/password)和textarea元素,那还是可以的,如果存在其他发元素,比如select,用户可以在重新改写值后按回车键进行提交(回车是默认的submit触发按键)。
  • 我们常常在用户按了提交按钮后,利用javascript将提交按钮disabled掉,这样可以防止网络条件比较差的环境下,用户反复点提交按钮导致数据冗余地存入数据库。

小技巧:diabled可用readonly代替,background-color:#cccccc;加上灰色背景色就可以。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章