保留validation特性同时让form提交时不刷新整个页面

  Interactive System Design的作业总是能让我遇到奇奇怪怪的问题,当然也有可能是因为我没走寻常路,用jsp实现起来应该会方便一些。

  在html5中form组件提供了原生的validation,非常好用。但是form必须使用submit方法的控件才能让validation跑起来,如果想在同时阻止submit方法造成的表格甚至整个页面的刷新就需要添上其他的代码。

html代码

1
2
3
4
5
6
7
8
9
<form id="myform" target="nm_iframe" onsubmit="submitForm()">
<input id="submit_handle" type="submit" style="display: none">
</form>
<a type="submit" class="button button-circle" onclick="parseForm()">
Generate
</a>
<iframe id="id_iframe" name="nm_iframe" style="display:none;"></iframe>

javascript代码

1
2
3
4
5
6
function submitForm() {
}
function parseForm() {
$('#submit_handle').click();
}

总结

  submit_handle部分过渡是为了个人的网站需要,因为想让按钮独立于form外,所以不需要的话html和js的两段过渡可以去掉。

  阻止刷新的部分主要用的就是让页面跳转到当前页面一个不显示的iframe,这算是一个trick,但是实现起来最简单。如果想要完整功能的也可以试试e.preventdefault()函数,但是我用了之后不知道怎么让表格在validation通过的情况下执行函数,所以就用这个凑合吧。