• JS获取form表单数据


    以下代码可放在一个js文件中,以便通用:

     1 //获取指定表单中指定标签对象 
     2 function getElements(formId, label) {
     3 var form = document.getElementById(formId);/* 获取表单引用(对象) */
     4 var elements = [];
     5 var tagElements = form.getElementsByTagName(label);/* 获取表单中指定标签名的元素引用(对象)数组 */
     6 for (var j = 0; j < tagElements.length; j++) {
     7 elements.push(tagElements[j]);
     8 }
     9 return elements;
    10 }
    11 // ----注:tagElements[j].name这种写法并不能确定该对象是哪一种类型的标签,如果是单复选按钮标签,则需要判断是否被选中的情况,所以要写一个方法过滤一下:
    12 // 根据标签type获取标签name,value(过滤)
    13 function typeFilter(element) {
    14 var label = [];
    15 switch (element.type.toLowerCase()) { /* 表单元素引用数组.元素类型.字符串转小写 */
    16 case 'submit':
    17 case 'hidden':
    18 case 'password':
    19 case 'text':
    20 label.push({
    21 name : element.name,/* 自定义的列名:列值 */
    22 value : element.value
    23 });
    24 return label;
    25 case 'checkbox':
    26 case 'radio':
    27 if (element.checked)
    28 label.push({
    29 name : element.name,/* 自定义的列名:列值 */
    30 value : element.value
    31 });
    32 return label;
    33 }
    34 return false;
    35 }
    36 //---注:case项可自定义,比如去掉 case 'submit'这种没意义的可能。
    37 
    38 // 获取指定表单的指定标签的name和value,并存到一个数组里,形参label可传入'*',表示全部标签
    39 function get_form_label_name_value(formId, label) {
    40 var elements = getElements(formId, label);
    41 var group = [];
    42 var one = [];
    43 for (var i = 0; i < elements.length; i++) {
    44 one = typeFilter(elements[i]);
    45 group.push({
    46 name : one[0].name,/* 自定义的列名:列值 */
    47 value : one[0].value
    48 });
    49 }
    50 return group;
    51 }
    52 
    53 //-----------------------------------------------------------------------------------
    54 
    55 //前台调用例子:
    56 //function show() {
    57 //    var NV = get_form_label_name_value('表单id','标签如input');
    58 //    if (NV != null && NV.length > 0) {
    59 //    for (var i = 0; i < NV.length; i++) {
    60 // if (NV[i].name != "") { /*这个if不加也可以,但是为了避免特殊情况,加上反而更有利于之后存入数据库等操作*/
    61 //    alert(NV[i].name);
    62 //    alert(NV[i].value);
    63 //    }
    64 // }
    65 //    }
    66 //}
  • 相关阅读:
    使用MyBatis时接收值和返回值选择Map类型或者实体类型
    如何在开发时部署和运行前后端分离的JavaWeb项目
    6月22日项目CodeReview问题及总结
    【转载】CSRF攻击及其应对之道
    【转载】MySQL事务以及SELECT ... FOR UPDATE的使用
    win10打开SQLServer, SQL Server 配置管理器
    iframe标签和frame标签异同
    8款让你耳目一新的软件开发工具
    快速开发平台的比较
    CSDN:Java Web 开发平台 WebBuilder 专访
  • 原文地址:https://www.cnblogs.com/nreg/p/9635830.html
Copyright © 2020-2023  润新知