使用jquery前端處理空白表單提交的幾種辦法(有更新)
阿新 • • 發佈:2019-01-07
表單驗空,並阻止提交。使用jquery的submit事件機制,利用event.preventDefault()阻止提交,程式碼如下:
<script type="text/javascript" src="/static/js/jquery-3.2.0.min.js"></script>
<script type="text/javascript">
function CheckNull() {
var num = 0;
$("input[type$='text']").each(function (n) {
if ($(this).val() == "") {
num++;
}
});
if (num > 0) {
return true;
}
else {
return false;
}
}
$("document").ready(
$("form").submit(function (e) {
if (CheckNull()){
e.preventDefault();
$("#ErrorMessage" ).text("不能有空項!");
}
})
);
</script>
防止使用者重複表單提交:
var CheckSubmitFlg = false;
function CheckSubmit() {
if (CheckSubmitFlg == true) {
return false;
}
CheckSubmitFlg = true;
return true;
}
//利用上一段程式碼的submit事件
$("form").submit(function (e) {
if (CheckSubmit()) {
e.preventDefault();
$("#ErrorMessage").text("不要重複提交!");
}
})
更好的解決辦法,利用session:
function CheckSessionFlg() {
book_p = $("#bookname").val();
if (book_p == $.session.get('book_session')) {
return true;
}
else {
$.session.set('book_session', book_p);
return false;
}
}
//新增資料
$.session.set('key', 'value')
//刪除資料
$.session.remove('key');
//獲取資料
$.session.get('key');
//清除資料
$.session.clear();
下面是一段使用多種方法進行表單空白驗證的js程式碼:
<script type="text/javascript" src="/static/js/jquery-3.2.0.min.js"></script>
<script type="text/javascript" src="/static/js/jquerysession.js"></script>
<script type="text/javascript">
function CheckNull() {
var num = 1;
$("input[type$='text']").each(function (n) {
if ($(this).attr("name") == "wechat") {
if ($(this).val() == "") { }
else { num--; }
console.log(num);
}
else if ($(this).attr("name") == "tencentqq") {
if ($(this).val() == "") { }
else { num--; }
console.log(num);
}
else if ($(this).attr("name") == "callothers") {
if ($(this).val() == "") { }
else { num--; }
console.log(num);
}
else if ($(this).val() == "") {
num++;
console.log(num);
}
});
if (num > 0) {
return true;
}
else {
return false;
}
}
var CheckSubmitFlg = false;
function CheckSubmit() {
if (CheckSubmitFlg == true) {
return true;
}
CheckSubmitFlg = true;
return false;
}
function CheckSessionFlg() {
book_p = $("#bookname").val();
if (book_p == $.session.get('book_session')) {
return true;
}
else {
$.session.set('book_session', book_p);
return false;
}
}
$("document").ready(
$("form").submit(function (e) {
if (CheckNull()){
e.preventDefault();
$("#ErrorMessage").text("不能有空項!");
}
// if (CheckSubmit()) {
// e.preventDefault();
// $("#ErrorMessage").text("不要重複提交!");
// }
else if (CheckSessionFlg()) {
e.preventDefault();
$("#ErrorMessage").text("不要重複提交同一書目!");
}
})
);
</script>
針對這個表單:
<form enctype="multipart/form-data" action="..." method="post">
<table width="0" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>書名 </td>
<td><input type="text" name="bookname" id="bookname" /></td>
</tr>
<tr>
<td>上傳書籍圖片 </td>
<td><input type="file" name="img"></td>
</tr>
<tr>
<td>作者 </td>
<td><input type="text" name="bookauthor" /></td>
</tr>
<tr>
<td>出版社 </td>
<td><input type="text" name="publish" /></td>
</tr>
<tr>
<td>圖書資訊(簡介) </td>
<td><input type="text" name="bookbrief" /></td>
</tr>
<tr>
<td>售價/原價 </td>
<td><input type="text" name="booksell" /> <input type="text" name="bookprice" /></td>
</tr>
<tr>
<td>微信(選填) </td>
<td><input type="text" name="wechat" /></td>
</tr>
<tr>
<td>qq(選填) </td>
<td><input type="text" name="tencentqq" /></td>
</tr>
<tr>
<td>其他聯絡方式(選填) </td>
<td><input type="text" name="callothers" /></td>
</tr>
<tr>
<td id="ErrorMessage"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="上架" />
<input type="button" value="重置" />
</td>
</tr>
</table>
</form>