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鼠标悬停特效具体方法
Jun 17 Javascript
jquery 通过name快速取值示例
Jan 24 Javascript
jquery+ajax实现跨域请求的方法
Jan 20 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
jQuery插件支持同一页面被多次调用
Feb 14 Javascript
Javascript中apply、call、bind的巧妙使用
Aug 18 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
Sep 06 Javascript
AngularJS表单验证中级篇(3)
Sep 28 Javascript
JS去除重复并统计数量的实现方法
Dec 15 Javascript
利用angularjs1.4制作的简易滑动门效果
Feb 28 Javascript
详解如何使用webpack+es6开发angular1.x
Aug 16 Javascript
原生js实现放大镜组件
Jan 22 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
PHP初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
EXT中xtype的含义分析
2010/01/07 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
django中静态文件配置static的方法
2018/05/20 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
python Tkinter的图片刷新实例
2019/06/14 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
哪些是python中web开发框架
2020/06/17 Python
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
士力架广告词
2014/03/20 职场文书
会计工作岗位职责
2015/02/03 职场文书
绿里奇迹观后感
2015/06/15 职场文书
关于运动会的宣传稿
2015/07/23 职场文书