form表单无法提交input disabled内容

现象描述:form表单提交内容是,无法提交设置为disabled的input输入框;

业务场景:用户输入手机号获得验证码,倒计时期间手机号不能修改;

解决方法:设置input的属性值为用readonly代替;

原因分析:

1、readonly和disabled的区别

readonly:针对input(text / password)和textarea有效,在设置为true的情况下,用户可以获得焦点,但是不能编辑,在提交表单时,输入项会作为form的内容提交。

disabled:针对所有表单元素(select,button,input,textarea等),在设置为disabled为true的情况下,表单输入项不能获得焦点,用户的所有操作无意义,在提交表单时,表单输入项不会被提交。

技术总结:

1、如果在某个表单中为用户不允许用户修改,但是在提交表单时传递值,应该设置为表单属性为readonly。

2、disabled和readonly的文本输入框只能通过脚本进行修改value属性。

标准规范:

W3C的规范:http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.12;

设置为disabled的input将会有下面的限制:

  • 不能接收焦点
  • 使用tab键时将被跳过
  • 可能不是successful的

设置为readonly的input将会有下面的限制:

  • 可以接收焦点但不能被修改
  • 可以使用tab键进行导航
  • 可能是successful

只有successful的表单元素才是有效数据,也即是可以进行提交。disabled和readonly的文本输入框只能通过脚本进行修改value属性。


你可能感兴趣的:(readonly,disabled,表单无法提交)