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 相关文章推荐
激活 ActiveX 控件
Oct 09 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
Feb 09 Javascript
13 个JavaScript 性能提升技巧分享
Jul 26 Javascript
使用JS CSS去除IE链接虚线框的三种方法
Nov 14 Javascript
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
AngularJS基础 ng-show 指令简单示例
Aug 03 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
Sep 05 Javascript
JS中如何实现复选框全选功能
Dec 19 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
May 21 Javascript
AngularJS 打开新的标签页实现代码
Sep 07 Javascript
Vue调试神器vue-devtools安装方法
Dec 12 Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 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
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
基于jquery的商品展示放大镜
2010/08/07 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
iscroll实现下拉刷新功能
2017/07/18 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
Python文件操作类操作实例详解
2014/07/11 Python
python避免死锁方法实例分析
2015/06/04 Python
Python判断字符串与大小写转换
2015/06/08 Python
Python选课系统开发程序
2016/09/02 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
中学教师实习自我鉴定
2013/09/28 职场文书
企业出纳岗位职责
2014/03/12 职场文书
秘书英文求职信
2014/04/16 职场文书
超市开店计划书
2014/09/15 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
2015年计划生育责任书
2015/05/08 职场文书
我的长征观后感
2015/06/09 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server