js表单中选择框值的获取及表单的序列化_javascript技巧

本文特意为js表单中选择框值的获取及表单的序列化做了下总结,写成了一个对象,分享给大家,欢迎大家学习。

var formUtil = {
  // 获取单选按钮的值,如有没有选的话返回null
  // elements为radio类的集合的引用
  getRadioValue:function(elements) {
   var value = null; // null表示没有选中项
   // 非IE浏览器
   if(elements.value != undefined && elements.value != '') {
    value = elements.value;
   } else {
    // IE浏览器
    for(var i = 0, len = elements.length; i < len; i++ ) {
     if(elements[i].checked) {
      value = elements[i].value;
      break;
     }
    }
   }
   return value;
  },

  // 获取多选按钮的值,如有没有选的话返回null
  // elements为checkbox类型的input集合的引用
  getCheckboxValue:function(elements) {
   var arr = new Array();
   for(var i = 0, len = elements.length; i < len; i++ ) {
    if(elements[i].checked) {
     arr.push(elements[i].value);
    }
   }
   if(arr.length > 0) {
    return arr.join(',');
   } else {
    return null; // null表示没有选中项
   }
  },

  // 获取下拉框的值
  // element为select元素的引用
  getSelectValue:function(element) {
   if(element.selectedIndex == -1) {
    return null; // 没有选中的项时返回null
   };
   if(element.multiple) {
    // 多项选择
    var arr = new Array(), options = element.options;
    for(var i = 0, len = options.length; i < len; i++) {
     if(options[i].selected) {
      arr.push(options[i].value);
     }
    }
    return arr.join(",");
   }else{
    // 单项选择
    return element.options[element.selectedIndex].value;
   }
  },

  // 序列化
  // form为form元素的引用
  serialize:function(form) {
   var arr = new Array(),
   elements = form.elements,
   checkboxName = null;
   for(var i = 0, len = elements.length; i < len; i++ ) {
    field = elements[i];
    // 不发送禁用的表单字段
    if(field.disabled) {
     continue;
    }
    switch (field.type) {
     // 选择框的处理
     case "select-one":
     case "select-multiple":
      arr.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(this.getSelectValue(field)));
      break;

     // 不发送下列类型的表单字段
     case undefined :
     case "button" :
     case "submit" :
     case "reset" :
     case "file" :
      break;

     // 单选、多选和其他类型的表单处理
     case "checkbox" :
      if(checkboxName == null) {
       checkboxName = field.name;
       arr.push(encodeURIComponent(checkboxName) + "=" + encodeURIComponent(this.getCheckboxValue(form.elements[checkboxName])));
      }
      break;
     case "radio" :
      if(!field.checked) {
       break;
      }
     default:
      if(field.name.length > 0) {
       arr.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(field.value));
      }
    }
   }
   return arr.join("&");
  }
 };

一个简单的demo:

<form action="test_php.php" id="form1" name="form1" method="post" enctype="multipart/form-data">
  姓名:<input name="name" type="text" tabindex="1" /> <br>
  性别:<input name="sex" type="radio" value="男"/> 男
    <input name="sex" type="radio" value="女" /> 女 <br>
  爱好:
  <input name="hobby" type="checkbox" value="篮球" /> 篮球
  <input name="hobby" type="checkbox" value="足球" /> 足球
  <input name="hobby" type="checkbox" value="乒乓球" /> 乒乓球
  <input name="hobby" type="checkbox" value="羽毛球" /> 羽毛球
  <br />
  年级:
  <select name="class" multiple>
   <option value="一年级">一年级</option>
   <option value="二年级">二年级</option>
   <option value="三年级">三年级</option>
  </select>
  <br />
   其他:
   <br />
   <textarea name="other" rows="5" cols="30" tabindex="2"></textarea>
   <br />
   <input type="reset" value="重置" />
   <input type="submit" value="提交" />
 </form>
 <div id="output"></div>
var form = document.getElementById("form1"),
 output = document.getElementById("output");

 // 自定义的提交事件
 EventUtil.addEventListener(form,"submit", function(event) {
  event = EventUtil.getEvent(event);
  EventUtil.preventDefault(event);
  var html = "";
  html += form.elements['name'].value + "<br>";
  html += formUtil.getRadioValue(form.elements['sex']) + "<br>";
  html += formUtil.getCheckboxValue(form.elements['hobby']) + "<br>";
  html += formUtil.getSelectValue(form.elements['class']) + "<br>";
  html += form.elements['other'].value + "<br>";
  html += decodeURIComponent(formUtil.serialize(form)) + "<br>";
  output.innerHTML = html;
 });

代码出现的EventUtil在这篇文章有介绍: 《js跨浏览器的事件侦听器和事件对象的使用方法》

以上就是对js表单中选择框值的获取及表单的序列化的详细介绍,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js
, 表单
序列化
javascript序列化表单、表单序列化、jquery 表单序列化、form表单序列化提交、form表单序列化,以便于您获取更多的相关知识。

时间: 2024-10-28 04:41:58

js表单中选择框值的获取及表单的序列化_javascript技巧的相关文章

js表单处理中单选、多选、选择框值的获取及表单的序列化_javascript技巧

本文总结了下在表单处理中单选.多选.选择框值的获取及表单的序列化,写成了一个对象.如下: var formUtil = { // 获取单选按钮的值,如有没有选的话返回null // elements为radio类的集合的引用 getRadioValue:function(elements) { var value = null; // null表示没有选中项 // 非IE浏览器 if(elements.value != undefined && elements.value != '')

js判断复选框是否选中及选中个数的实现代码_javascript技巧

用js判断复选框是否选中及选中个数,以前经常有朋友提到复选框的选中问题,这段代码可以帮你解决这个问题,而且它还可以判断你选择了多少个复选框,多选则弹出提示 <HTML> <head> <title>判断复选框是否选中及选中个数</title> <SCRIPT LANGUAGE="JavaScript"> function countChoices(obj) { max = 2; box1 = obj.form.box1.che

js实现iframe框架取值的方法(兼容IE,firefox,chrome等)_javascript技巧

本文实例讲述了js实现iframe框架取值的方法.分享给大家供大家参考,具体如下: 为啥世上会有这么多不同的浏览器?每次遇到js/css的浏览器兼容性问题,总是要发出这样的感叹,真希望这些个浏览器公司全部倒下,然后只留下一家(显然这是一个不可能实现的美好愿望),言归正传,看代码吧: iframe框架内页: <html> <head> <title>框架内页</title> </head> <body> <div> <

js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法_javascript技巧

js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法 <script> $(function () { var SelectVal = $("input[name='rblGJS']:checked").val(); if (SelectVal == 1) { $("#gjsbh").show(); } $("#<%=rblGJS.ClientID %>").change(function () {

设置jsf的选择框h:selectOneMenu为不可编辑状态的方法_javascript技巧

1.js代码: 复制代码 代码如下: function init() { document.getElementById("studyPhase").disabled=true; } 2.h:selectOneMenu下拉框 复制代码 代码如下: <h:selectOneMenu id="studyPhase" value="#{schoolfellowInfoEdit.studyPhase}" > <f:selectItems

表单中单选框添加选项和移除选项_jquery

selection添加option并放在最后一项 html代码: <form> <select name="location" id="location"> <option value="beijing1">beijing</option> <option value="shanghai1">shanghai</option> <option val

jQuery实现批量判断表单中文本框非空的方法(2种方法)_jquery

本文实例讲述了jQuery实现批量判断表单中文本框非空的方法.分享给大家供大家参考,具体如下: 方法一: <script type="text/javascript"> /* * 批量验证表单非空 * 需要非空验证控件的样式class="mustadd" */ $(".mustadd").each(function(){ if($(this).val() == ''){ alert("该项不可为空!"); $(th

js实现select选择框效果及美化_javascript技巧

网上有各种各样的关于 select 选择框的美化,找了很多,并没有好的样式效果.所以就找了一个利用 ul li 做的类似 select 选择框的效果,不废话了,先上图,效果如下: 点击一个 test ,就会把列表显示出来,再次点击,列表隐藏,选择一个 li ,就会把 span 里的内容替换成 li 的内容,然后可以用 js 监控 span 的变化,然后执行你的代码.效果如下:  html 代码如下:  <div id="type" class="test"&g

多级联动下拉选择框,动态获取下一级_XML/RSS

    多级联动下拉选择框,动态获取下一级,每一级数据为XML,可支持无限级(浏览器端需要Microsoft.XMLDOM支持)     项目需要,一个材料类别表,三级,总共有7000多条记录,如果一次获取会很慢的,所以就是用了动态读取,每次就读一级,且服务器端使用了缓存,效率还不错. HTML代码如下: <select name="MaterialClass1" ChildSelectName="MaterialClass2"></select&