使用预先填充的表单,仅提交更改的字段 [英] Using prepopulated form, submit only changed fields

查看:82
本文介绍了使用预先填充的表单,仅提交更改的字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用select和text输入的html表单。表单预先填入默认值。我如何仅提交用户从其默认值更改的输入?请注意,这个页面将被存储在一个空间有限的嵌入式系统中,所以使用javascript库是不可能的。



示例html:

 < form> 
< input type =textname =field1value =value1/>
< input type =textname =field2value =value2/>
< select name =field3>
< option value =option1select> Option 1< / option>
< option value =option2select> Option 2< / option>
< / select>
< input type =Submit/>
< / form>

要清楚,用户不会更改的输入不应显示在POST请求中表单已提交。

解决方案

根据Barmar建议使用数组来追踪哪些值已更改,这是我的解决方案



以下是js:

  var tosubmit = [] 
function add(name){
if(tosubmit.indexOf(name)== -1)
tosubmit.push(name);

$ b $函数is_changed(name){
for(var k = 0; k< tosubmit.length; k ++)
if(name == tosubmit [ k])
返回名称&&真正;
返回false;


函数before_submit(){
var allInputs = document.getElementsByTagName(input);
var allSelects = document.getElementsByTagName(select); (var k = 0; k< allInputs.length; k ++){
var name = allInputs [k] .name;
if(!is_changed(name))
allInputs [k] .disabled = true; (var k = 0; k var name = allSelects [k] .name;
}
;
if(!is_changed(name))
allSelects [k] .disabled = true;


$ / code $ / pre
$ b $ html $:

 < form onSubmit =beforeSubmit()> 
< input type =textname =field1value =value1onchange =add('field1')/>
< input type =textname =field2value =value2onchange =add('field2')/>
发送“验证码”获取 | 15天全站免登陆