在web开发中,客户端经常需要提交一些数据给服务器。有些时候网页上有一个集中的填表区域,看起来就像一个标准的form。实现起来可以很方便的用form标签做到。但我常常在想,如果网页有设计成分散的,凌乱的需要,那么是不是应该写一个与body齐高的form来装载整个区域中7零8落的input们呢?看起来这是一种笨拙的解决方案。今天在项目中无意看到一些form标签的奇怪用法,他们出现在jsp中,但是页面上没有出现,让我一度以为这种暗无天日的form写在这,也许是某个开发人员忘记删掉的东西。经过mingming大哥指点,我才恍然大悟,这个form是一个hidden的form,它的功能就是负责将需要提交的数据整合在一起,然后用一个hidden的submit按钮来实现提交,由于这个submit按钮是hidden的,用户仿佛永远都点不到,但是没有关系,javascript可以在用户做某些看的见的“提交”动作的时候,巧巧的点一下用户看不见的hidden的submit。
比如下面这一个隐藏的form:
<form action="/submitContent" class="hiddenForm" method="post">
<input type="text" id="newContent" name="newContent">
<input type="submit" id="contentSubmit">
</form>
那么怎么往这个form中添加内容(填表)呢?用javascript来把某些需要填进这个input的内容,比如在某个button的click函数中加入:
$('#newContent').val($('#resourcesContent').val());
$('contentSubmit').click();
如此一来就讲id为resourcesContent的元素的内容给复制到隐藏form中的id为newContent的input框中了,复制完毕之后,javascript控制点击了隐藏表单的submit按钮(id为contentSubmit),实现数据提交。