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 相关文章推荐
获取数组中最大最小值方法js代码(自写)
Aug 12 Javascript
javascript利用apply和arguments复用方法
Nov 25 Javascript
jquery实现select选中行、列合计示例
Apr 25 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
Jun 23 Javascript
jQuery中的Deferred和promise 的区别
Apr 03 Javascript
self.attachevent is not a function的解决方法
Apr 04 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
Dec 27 Javascript
Vue项目组件化工程开发实践方案
Jan 09 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 Javascript
了解javascript中let和var及const关键字的区别
May 24 Javascript
Vue程序调试的方法
Jun 17 Javascript
JavaScript 判断浏览器是否是IE
Feb 19 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字符串的编码问题的详细介绍
2013/04/27 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
利用jq让你的div居中的好方法分享
2013/11/21 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
基于Django的python验证码(实例讲解)
2017/10/23 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
老生常谈python中的重载
2018/11/11 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
flask框架中的cookie和session使用
2021/01/31 Python
python实现银行账户系统
2021/02/22 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
C语言50道问题
2014/10/23 面试题
营销与策划个人求职信
2013/09/22 职场文书
社区维稳工作方案
2014/06/06 职场文书
领导班子四风表现材料
2014/08/23 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
把77A收信机改造成收音机
2022/04/05 无线电