项目是一个BBS论坛项目,需要在表单进行提交前判定标题是否为空,若为空的话则不允许进行提交。
一般的处理方式为:
<button class="addBtn" οnclick="submitForm()">发布主题</button>
然后在submitForm()函数内部进行提交前的判定,最后进行提交或者输出提示后不提交。
但是感觉这样代码混杂度更高,使用onsubmit属性应该会使代码更加简洁。而且也不用手动调用submit()方法。
我的表单是这样的:
<form method="post" action="titles_Add.action" <span style="color:#ff6666;">οnsubmit="return checkinput()"</span>>
如此定义的时候提交前会先进入checkinput()方法,若方法返回false则不提交表单。返回true才会提交表单。
checkinput()方法如下:
function checkinput(){
var title = document.getElementById("title").value;
if(title == null || title == ''){
alert("标题不能为空");
return false;
}
return true;
}
但是这样做的话提交必须使用<input>标签定义提交按钮,即:
<input class="addBtn" type="submit" value="发布主题" />
若手动调用submit()方法的话,onsubmit阻止提交的作用不会生效,程序会在运行checkinput方法后继续运行submit()方法进行提交。
比如下面这种提交方式就无法阻止提交,但仍会执行checkinput方法并输出语句:
<button class="addBtn" οnclick="submit()">发布主题</button>
onsubmit属性实质上只是定义了表单提交前需要执行的方法。但是当其中加入了return关键字之后,即其内部运行结果为return false时,有阻止表单提交的作用,所以才有了此种用法。