html表单中获取表单数据,利用JS轻松实现获取表单数据

接触过Angularjs的都知道,ng支持双向绑定,我们可以轻轻松松的通过ngModel将我们的值绑定到界面,当修改了值提交表单的时候不需要再重新通过ID去重新抓取输入框信息了。那对于我们开发前台网站,不用ng一类的MVVM框架,只引用了Jquery,那么在处理表单的时候该怎么做呢。

一. 原始做法

--请选择--

--1--

--2--

--3--

程序员A会说,So easy,通过Jquery id 去获取每个输入框的值就OK。多简单。

function getEntity(){

return {

select1:$("#select1").val(),

radio1:$("#radio1").prop('checked'),

text1:$("text1").val(),

textArea1:$("textArea1").val()

}

}

二. 升级做法.

程序员B说, 这样不行哦,很多页面都有表单提交, 那不是每个地方都要用Jquery去获取值,如果以后新增了输入框,每次HTML修改了,还要修改对应的JS,多麻烦。于是爱偷懒的程序员B想到了一种方法,通过自定义标签来实现。

2.1  我们将表单包装到一个form的div下,每个输入的控件新增一个data-field属性. data-field里面写构建实体的属性名称,考虑到会出现嵌套的对象。所以data-field 里面属性名称通过 . 点来隔开,譬如  data-field='Person.Name' 后面就会构建出 { Person:{ Name:xxx }} .下面的是没有嵌套的对象的例子

--请选择--

--1--

--2--

--3--

2.2 提供一个getEntity方法。 读取外层的Form然后找到所有的data-field 属性去遍历. 因为输入框有checkbox和radio,input和select, 所以判断类型先取出值。然后调用getField方法构建实体。代码就不做详细解答了。应该都能看懂。只是想表达一下思路想法而已。

function getEntity(form) {

var result = {};

$(form).find("[data-field]").each(function() {

var field = $(this).attr("data-field");

var val;

if ($(this).attr('type') == 'checkbox') {

val = $(this).prop('checked');

} else if ($(this).attr('type') == 'radio') {

val = $(this).prop('checked');

} else {

val = $(this).val();

}

// 获取单个属性的值,并扩展到result对象里面

getField(field.split('.'), val, result);

});

return result;

}

function getField(fieldNames, value, result) {

if (fieldNames.length > 1) {

for (var i = 0; i < fieldNames.length - 1; i++) {

if (result[fieldNames[i]] == undefined) {

result[fieldNames[i]] = {}

}

result = result[fieldNames[i]];

}

result[fieldNames[fieldNames.length - 1]] = value;

} else {

result[fieldNames[0]] = value;

}

}

2.3 下面来看看上面输出的结果,哈哈值取到了。

f0aba84c2c73531bcb661b04400947b8.png

2.4 下面我们来看看看嵌套的对象

--职位--

java工程师

.net工程师

python工程师

256ad8c98f000917f7b767c129a7bce5.png

2.5  提供了获取实体的方法,当然也要提供赋值的方法呀。下面来看看赋值的方法

function setEntity(form, entity) {

$(form).find("[data-field]").each(function() {

var field = $(this).attr("data-field");

fieldNames = field.split('.');

var value = JSON.parse(JSON.stringify(entity));

for (var index = 0; index < fieldNames.length; index++) {

value = value[fieldNames[index]];

if (!value) {

break;

}

}

if ($(this).attr("type") === "checkbox" ||

$(this).attr("type") === "radio") {

$(this).attr('checked', Boolean(value));

} else {

if (value) {

$(this).val(value);

} else {

$(this).val("");

}

}

})

}

68079a30e7ebe8249ebead85c583bcd6.png

呵呵,值附上去了.

三. 总结:

上面只是提供了解决方案, 虽然前台系统,不会考虑像后台backend 系统那样,用react,angularjs这种MVVM框架, 虽然只是用了一个Jquery而已。不过我们还是可以通过一些方法来简化项目代码的。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,同时也希望多多支持脚本之家!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JS是一种用于网页开发的脚本语言,它可以通过获取form单中数据实现对网页元素的操作。当用户在网页上填写了信息并点击提交按钮时,JS可以通过使用document对象的getElementById、getElementsByTagName或getElementsByName等方法来获取相应的元素,进而获取单中数据。 一般而言,JS获取form单中数据常用的方法是通过元素的name或id属性来获取。使用getElementById方法可以通过元素的id属性获取该元素的引用,进而获得用户在该元素中输入的数据。另外,可以使用getElementsByTagName方法获取所有的元素,然后通过遍历这些元素的name属性来获取具体的单数据,或者通过getElementsByName方法直接获取指定name属性的元素。 获取到form单中数据后,JS可以使用这些数据进行各种操作,比如将数据存储到数据库中、进行验证、实现的动态交互等。可以通过JS单数据进行处理、校验和转换,以满足特定需求。 需要注意的是,在获取form单中数据时,应注意数据的安全性和正确性。可以使用正则达式来对输入的数据进行格式校验或过滤,以防止用户输入非法数据。另外,在处理单数据时,也要注意数据的类型转换和编码,确保数据的准确性和完整性。 总而言之,JS是一种用于获取form单中数据并进行操作的脚本语言,通过使用document对象的相应方法,可以实现单数据的获取、处理和验证,以满足网页开发中的各种需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值