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 相关文章推荐
在JavaScript中,为什么要尽可能使用局部变量?
Apr 06 Javascript
关于jquery的多个选择器的使用示例
Oct 18 Javascript
jQuery中on()方法用法实例
Jan 19 Javascript
js实现的动画导航菜单效果代码
Sep 10 Javascript
Javascript获取随机数的实现方法
Jun 22 Javascript
js本地图片预览实现代码
Oct 09 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
Aug 14 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
Jun 19 Javascript
Angular请求防抖处理第一次请求失效问题
May 17 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
Jul 03 Javascript
JS通用方法触发点击事件代码实例
Feb 17 Javascript
ES6中Set和Map用法实例详解
Mar 02 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的array_multisort()使用方法介绍
2012/05/16 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
python正则分组的应用
2013/11/10 Python
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
Python的迭代器和生成器
2015/07/29 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
详解python3中的真值测试
2018/08/13 Python
python实现三次样条插值
2018/12/17 Python
python实现控制台打印的方法
2019/01/12 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
南京某公司笔试题
2013/01/27 面试题
早读迟到检讨书
2014/01/24 职场文书
毕业生求职自荐书范文
2014/03/27 职场文书
寄语是什么意思
2014/04/10 职场文书
环保标语大全
2014/06/12 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
导游词之无锡梅园
2019/11/28 职场文书
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python