Vue表单提交点击事件只允许点击一次的实例


Posted in Javascript onOctober 23, 2020

常用出现场景:商城点击订单提交

1、使用Vue封装事件

body:

<template>
 <div>
 <el-button @click.once="submitOrder()">提交订单</el-button>
 </div>
</template>

方法:

methods: {
 submitOrder() {
 // 处理逻辑
 }
}

2、使用原生JS事件

在数据data里面声明一个flag属性

data() {
 return {
 isSubmit: true;
 }
}

body:

<template>
 <div>
 <el-button @click="submitOrder()">提交订单</el-button>
 </div>
</template>

方法:

methods: {
 submitOrder() {
 if (this.isSubmit) {
 this.isSubmit = false;
 // 处理逻辑
 }
 }
}

补充知识:表单验证提交内容不能为空的几种方法

方法一:

使用css的required属性

<input type="" required="required" name="" id="" value="" />

方法二:

使用JS代码示例,注意事项:form要加上onSubmit事件,form.xx.vlaue要在表单中对应name

<script type="text/javascript">
function beforeSubmit(form){
if(form.username.value==''){
alert('用户名不能为空!');
form.username.focus();
return false;
}
if(form.password.value==''){
alert('密码不能为空!');
form.password.focus();
return false;
}
if(form.password.value.length<6){
alert('密码至少为6位,请重新输入!');
form.password.focus();
return false;
}
if(form.password.value!=form.password2.value) {
alert('你两次输入的密码不一致,请重新输入!');
form.password2.focus();
return false;
}
return true;
}
</script>

<fieldset>
  <legend>用户注册</legend>
  <form method="post" name="form" action="user.do?method=register" onSubmit="return beforeSubmit(this);">
   <table border="1" width="100%" cellspacing="0" cellpadding="0">
   <tr><td><label>用户名:<input type="text" name="username" value=""></label></td></tr>
   <tr><td><label>密  码:<input type="password" name="password" value=""></label></td></tr>
   <tr><td><label>重复密码:<input type="password" name="password2" value=""></label></td></tr>
   <tr><td><input value="注册" type="submit"> <input type="reset" value="重置"></td></tr>   
   </table>
  </form>
</fieldset>

方法三:

使用jQuery方法(通过class验证),需要引用jquery.min.js

优势:

1:为input添加class,名字可以随意设置,但每个input需要保持一致,本章案例calss设置为noNull。(若input已有class属性,可直接加到其后)

2:为input添加一个属性,用来后期通过jquery获取该字段,用作提示语。本章案例提示属性为notNull。

3:通过jQuery遍历页面中所有calss为noNull的表单,验证其是否为空,若为空,通过获取notNull的字段,进行为空提示。

具体如何设置,请参照下面的案例。

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
</head>
<body>
  <form>
      <!-- input -->
      <div>
        姓名: <input type="text" name="name" notNull="姓名" class="form-control noNull"> 
      </div>
      <br>
      <!-- radio -->
      <div>
       性别:
       男<input type="radio" name="sex" value="0" class="noNull" notNull="性别">
       女<input type="radio" name="sex" value="1" >
      </div>
      <br>
      <!-- select -->
      <div>
        年龄:
        <select name="age" class="noNull" notNull="年龄">
          <option value ="">请选择</option>
          <option value ="1">1</option>
          <option value ="2">2</option>
        </select>
      </div>
      <br>
      <!-- checkbox -->
      <div>
        兴趣:
        打球<input type="checkbox" name="hobby" value="1" class="noNull" notNull="兴趣">
        唱歌<input type="checkbox" name="hobby" value="2">
        跳舞<input type="checkbox" name="hobby" value="3">
      </div>
      <br>
     <button type="button" class="btn-c" onclick="bubmi()">保存</button>
  </form>

<script src="jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function bubmi(){
  $(".noNull").each(function(){
    var name = $(this).attr("name");
    if($(this).val()==""){
    alert($(this).attr('notNull')+"不能为空");return false;
    }
    if($(this).attr("type")=="radio"){ 
      if ($("input[name='"+name+"']:checked").size() < 1){ 
        alert($(this).attr('notNull')+"不能为空!"); 
        return false; 
      } 
    }
    if($(this).attr("type")=="checkbox"){ 
      if ($('input[name="'+name+'"]:checked').size() < 1){ 
        alert($(this).attr('notNull')+"不能为空!"); 
        return false; 
      } 
    }    
  })  
}
</script>
</body>
</html>

以上这篇Vue表单提交点击事件只允许点击一次的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
网页整体变灰白色(兼容各浏览器)实例
Apr 21 Javascript
node.js中的fs.mkdirSync方法使用说明
Dec 17 Javascript
javascript实现下拉提示选择框
Dec 29 Javascript
jQuery获取radio选中项的值实例
Jun 18 Javascript
jQuery中deferred对象使用方法详解
Jul 14 Javascript
浅谈Angular的$q, defer, promise
Dec 20 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
Jan 18 Javascript
Node做中转服务器转发接口
Oct 18 Javascript
JavaScript生成指定范围的时间列表
Mar 19 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
Feb 22 Javascript
手机浏览器唤起微信分享(JS)
Oct 11 Javascript
JavaScript实现瀑布流布局的3种方式
Dec 27 Javascript
利用PHP实现递归删除链表元素的方法示例
Oct 23 #Javascript
如何在面试中手写出javascript节流和防抖函数
Oct 22 #Javascript
如何通过Proxy实现JSBridge模块化封装
Oct 22 #Javascript
微信小程序canvas动态时钟
Oct 22 #Javascript
vue-cli —— 如何局部修改Element样式
Oct 22 #Javascript
微信小程序入门之绘制时钟
Oct 22 #Javascript
微信小程序入门之指南针
Oct 22 #Javascript
You might like
PHP系统流量分析的程序
2006/10/09 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
python实现udp数据报传输的方法
2014/09/26 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
python验证码识别实例代码
2018/02/03 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
Python实现微信小程序支付功能
2019/07/25 Python
python科学计算之narray对象用法
2019/11/25 Python
python的faker库用法
2019/11/28 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
python温度转换华氏温度实现代码
2020/12/06 Python
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
外贸业务员工作职责
2014/01/06 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
初中成绩单评语
2014/12/29 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers