周末总是过得很快,又到了跟代码亲密接触的日子,我在北京向各位问好,今天我分享一点关于前端的东西,HTML5之标签"data-*"自定义属性的值传递。

在过去学习JavaScript时,我们可能经常会手动的完成对表单数据的校验,此功能在开发中非常常见,属于通用的功能范畴。今天我就给各位记录其中的一种,就是HTML5的"data-*"机制,它是一种标记语言标签的自定义属性,完全可以依靠这种机制自由地向后台提供各种数据,极其方便,当然,这种自定义属性的值可以通过jQuery提供的data()方法来获取。

前几天在给公司网站更换页面的过程中,我狠幸运的参与了统计模块那块的业务和功能改造,由于我个人比较喜欢写一些由聚合函数存在的业务SQL,因为这类SQL语句大部分都有优化的必要,之前在博客中也分享过自己优化的一些案例,可能不是优化的很彻底,但是速度是上去了。

好了,下面正式来说说HTML5的"data-*"的机制提供数据,并如何获取。因为之前在更换页面的过程中也看到了公司使用"data-*"的机制来输送数据,但是对它的印象不是太深,就没有深究。今天我特意把这种使用"data-*"机制来向后台输送数据的过程学习了一下,感觉这种方式输送数据对于我们Java开发者来说是非常有用的,因为有时候复杂业务的实现就在于数据传输的行不通而导致一种很好的实现思路就此熄灭,这个完全是我个人的感受,因为在以前开发中有多次这种欲达而不达的痛苦经历,如果能够自由灵活的通过各种方式无困难传递各种参数,那么在实现起某些复杂业务就有很多中选择了。

下面是一个表单中定义data-*自定义属性,并如何获取属性的数据值。

 <form action="${zxz}/jQueryData/getData" id="dataFrom" method="post">
用户名:<input id="username" data-user-uname="18513032646" name="username" value="">
密码:<input id="password" data-user-pwd="20170724" name="password" value="">
<input type="button" value="提交" onclick="submitFrom()">
</form>

上面代码块中的红色字体就是我在表单项中使用data-*机制定义的自定义属性,并对他们绑定了具体的数据,当然在实际需求中(之前换页面那次)是动态获取的,我现在的需求就是:异步提交表单,在提交过程中动态获取自定义属性的值并以此作为相应表单项的value的值?

<script type="text/javascript">
function submitFrom(){
//获取"data-"机制提供的数据
var name = $("#username").data("userUname"); //data("user-uname")这种写法也是可以的
var pwd = $("#password").data("userPwd");
//alert(name+"##"+pwd);
//将获取的机制数据设置到表单项中并提交到后台
$("#username").val(name);
$("#password").val(pwd);
//提交表单
$("#dataFrom").submit();
}
</script>

从上面的实现过程中不难看出,在使用jQuery提供的data()方法获取"data-*"机制提供的数据时,只需要将"data-"去掉,然后后面的单词使用驼峰式的字符串作为方法参数来获取即可,这是因为JSON Object 的key不能包含”-“。但是说到这儿,我不得我多说点儿,通过早上的各种尝试得出,如果你没有使用驼峰式的方式来获取,也可以使用另外一种方式,直接把"data-"去掉,最后在data()方法中直接把后面剩余的字符串作为参数传入即可获取,但是除此之外其他的写法都应该不行,你只会得到"类型未定义undefined"这样的错误。

jQuery的data()方法,该方法是用来获取data-*自定义属性的值,也可以覆盖或存储data-*属性的值。如果你在方法中传入一个参数则是获取对应"data-*"属性的值,如果是俩个,则覆盖或设置一个新值给对应"data-*"属性。

//获取"data-"机制提供的数据
var name = $("#username").data("userUname"); //data("user-uname")这种写法也是可以的
//更变code的data-*的值
$("#code").data("sysCode","改变验证码");
var code = $("#code").data("sysCode"); //获取到的是改变后的code值

这张图片我是在浏览器中断点跟进的过程图以及它们的值变化验证图,有图有真相。

采用HTML5之"data-"机制自由提供数据的更多相关文章

  1. Web 前沿——HTML5 Form Data 对象的使用

    XMLHttpRequest Level 2 添加了一个新的接口——FormData.利用 FormData 对象,我们可以通过 JavaScript 用一些键值对来模拟一系列表单控件,我们还可以使用 ...

  2. HTML5 Form Data 对象的使用

    HTML5 Form Data 对象的使用  MDN: https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_FormData_Object ...

  3. 【翻译】详解HTML5 自定义 Data 属性

    原标题:HTML5 Custom Data Attributes (data-*) 你是否曾经使用 class 或 rel 来保存任意的元数据,只为了使你的JavaScript更简单?如果你回答是的, ...

  4. 脑洞大开之采用HTML5+SignalR2.0(.Net)实现原生Web视频

    目录 对SignalR不了解的人可以直接移步下面的目录 SignalR系列目录 前言 - -,我又来了,今天废话不多说,我们直接来实现Web视频聊天. 采用的技术如下: HTML5 WebRTC Si ...

  5. HTML5应用缓存机制

    首先先上一张图: 用360浏览器的用户对这张图应该都是耳熟能详了吧,没错,当网络不通畅时使用360浏览器,便会有这张图弹出来.为什么没有网络还能弹出这一副画面呢?这就关乎HTML5的应用缓存机制了. ...

  6. Web 前沿——HTML5 Form Data 对象的使用(转)

    XMLHttpRequest Level 2 添加了一个新的接口——FormData.利用 FormData 对象,我们可以通过 JavaScript 用一些键值对来模拟一系列表单控件,我们还可以使用 ...

  7. Web 前沿——HTML5 Form Data 对象的使用

    原文地址:http://www.cnblogs.com/lhb25/p/html5-formdata-tutorials.html XMLHttpRequest Level 2 添加了一个新的接口-- ...

  8. 浅谈HTML5 WebSocket的机制

    回想上一章 在上一章<为什么我们须要HTML5 WebSocket>中,我简单的介绍了下WebSocket的前世今生.相信大家已对WebSocket有了初步的了解.那么今天我们继续深入学习 ...

  9. 【转】Web 前沿——HTML5 Form Data 对象的使用

    XMLHttpRequest Level 2 添加了一个新的接口——FormData.利用 FormData 对象,我们可以通过 JavaScript 用一些键值对来模拟一系列表单控件,我们还可以使用 ...

随机推荐

  1. eclipse 好用的插件总结

    改变eclipse的背景色,各种关键词颜色的插件. color theme. 在mac下最好是通过手动复制粘贴jar文件到, eclipse的plugins下面. 通过Install new soft ...

  2. Vulkan Tutorial 15 Framebuffers

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 我们在前面的章节中已经讨论了很多次framebuffers帧缓冲区,到目前为止我们配 ...

  3. AmpOne

    AmpOne 基于Windows平台的Apache .PHP.Mysql 开发环境 | One intergrated tools package of Apache + PHP + MySQL fo ...

  4. iptables 基本用法

    iptables 1.iptables 表 (1)介绍常用表 filtert(过滤器) 链 ↓ INPUT chain:控制进入主机的数据包 OUTPUT chain:控制向外发出的数据包 FORWA ...

  5. python 标准库 -- glob

    glob glob.glob() import glob l = glob.glob("/root/*") # 返回列表 print l # 输出如下 ['/root/databa ...

  6. printf和scanf整理(后续填补)

    scanf和printf头文件:<stdio.h> 1.%d.%3d.%03d.%-3d区分 %d:以十进制形式输出整数(int) %3d:指定宽度为3,不足的左边补空格 %03d:一种左 ...

  7. Java学习笔记--反射API

    反射API 1.反射API的介绍 通过反射API可以获取Java程序在运行时刻的内部结构.比如Java类中包含的构造方法.域和方法等元素,并可以与这些元素进行交换.     按照 一般地面向对象的设计 ...

  8. WPF 杂谈——Trigger触发器

    笔者在使用的WPF过程中,见过的触发器有三种:Trigger.DataTrigger.EventTrigger.其中最为常用的要属Trigger.至于触发器的作用就是当某个属性的值发生变化,应该去做某 ...

  9. Unity 游戏框架搭建 (二) 单例的模板

      上一篇文章中说到的manager of managers,其中每个manager都是单例的实现,当然也可以使用静态类实现,但是相比于静态类的实现,单例的实现更为通用,可以适用大多数情况. 如何设计 ...

  10. 在两个ASP.NET页面之间传递变量【转】

    ASP.NET提供了事件驱动编程模型,使开发者简化了应用程序的总体设计,但是这个也造成了它固有的一些问题,例如,在传统的ASP里,我们可以通过使用POST方法很容易地实现页面间传递变量,同样的事情,在 ...