提交,disabled,表单域如果表单中的某个表单域被设定为disabled,则该表单域的值就不会被提交。但是有的时候确实需要提交这个值。 解决方案有很多,比如不用disabled而是使用readonly等,但是我认为都并不是很好(具体原因略)。
我想到一种方案,就是在提交之前,把要提交的表单复制一份,然后把复制后的表单中的所有表单域的disabled属性都置为false,然后提交这个复制后的表单。下面是演示用的代码(将代码保存到一个名为submit.html的文件中即可观察演示效果)。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift-jis"> <title> Submit form </title> <script> function doSubmit(form) { var newForm = form.cloneNode(true); enableFields(newForm.getElementsByTagName("input")); enableFields(newForm.getElementsByTagName("textarea")); enableFields(newForm.getElementsByTagName("select")); newForm.style.display = "none"; document.body.appendChild(newForm); newForm.submit(); } function enableFields(fields) { for(var i=0;i<fields.length;i++) { var field = fields[i]; if (field instanceof(Array)) { for (var j=0;j<field.length;j++) { field[j].disabled = false; } } else { field.disabled = false; } } } </script> </head> <body> <form action="submit.html"> <input type="text" name="text" value="tt" disabled/> <input type="radio" name="radio" value="r1" checked disabled>r1 <input type="radio" name="radio" value="r2">r2 <input type="checkbox" name="checkbox" value="c1">c1 <input type="checkbox" name="checkbox" value="c2" checked disabled>c2 <select name="select" disabled> <option value="1">1</option> <option value="2">2</option> </select> <textarea name="textarea" disabled>123</textarea> <input type="button" value="submit" onclick="doSubmit(this.form)"> </form> </body>
提交,disabled,表单域
|