表单元素之选择系

选择系特指input[type=radio]与input[type=checkbox], 俗话的单选框与复选框。它们都是 通过checked属性决定是否能提交到后端,在传统框架中,都是将它们序列化成字符串进行提交,但新的MVVM框架, 它们对应的是更语义化的东西。单选框为一个布尔,那么只要将它的name值及选中或选中的布尔(通常为节省字符简化为0或1)提交就行。在复选框 对应一个字符串数组,将数组序列化进行提交。

从上面的描述来看,关键在于checked属性的监听。通常来说,属性变动用change事件就行了,但IE又给我们带来麻烦。

表现在以下两个方面

如果有一个radio,我们点击它让它选中,然后再点它让它不选中.事实上,只有一个radio的情况下,一旦选中,光是通过点击事件,它是变不回非选中状态.我们需要手动el.checked = true|false实现.更直观的代码是el.checked = !el.checked.

这个是许多浏览器下生效,但IE6下偏偏不行,查资料,发现是通过defaultChecked属性进行设置,并且这个触发行为需要异步进行.

            if (IE6) {
                setTimeout(function () {
                    //IE8 checkbox, radio是使用defaultChecked控制选中状态,
                    //并且要先设置defaultChecked后设置checked
                    //并且必须设置延迟
                    elem.defaultChecked = checked
                    elem.checked = checked
                }, 31)
            } else {
                elem.checked = checked
            }

第二个checkbox的监听, IE复选框onchange必须点击了其他地方才触发, 因此网上流行使用onclick或onpropertychange事件代替. 但onpropertychange事件是监听所有属性的变动,因此有误判,建议使用onclick.

这个BUG在IE9就修好了.

此外还有一些简单的文章供大家学习

RadioButton和CheckBox的区别

HTML复选框和单选框 checkbox和radio事件介绍

美化表单——自定义checkbox和radio样式

时间: 2024-10-19 21:37:24

表单元素之选择系的相关文章

表单元素之搭车系

对于表单元素,除了reset元素,只要有name与value都能提交 因为在我们印象中,只有能选择的,能填空的,就是我们要提交的.但浏览器还提供一种机制,让我们能让除了用户自己添加的东西外,还能偷偷地提交"额外"的东西. 这些搭顺风车的东西,目前有三种,input[type=hidden],input[type=submit],input[type=image] 偷偷加的东西,目的是不让用户填这么东西.比如某些报表,它是由多个表单组成,上一页用户提交的东西,下一页还要用户提交,此外还有

jQuery获取Select选择的Text(非表单元素)和 Value(表单元素)(转)

jQuery获取Select选择的Text和Value: 语法解释: 1. $("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发 2. var checkText=$("#select_id").find("option:selected").text(); //获取Select选择的Text 3. var checkValue=$("#selec

第 10 章 表单元素[下]

学习要点: 1.其他元素 2.输入验证 主讲教师:李炎恢 本章主要探讨 HTML5 中表单中剩余的其他元素,然后重点了解一下表单的输入验证功能. 一.其他元素 表单元素还剩下几个元素没有讲解,包括下拉框列表 select.多行文本框 textarea.和 output 计算结果元素. 元素名称 说明 select 生成一个下拉列表进行选择 optgroup 对 select 元素进行编组 option select 元素中的项目 textarea 生成一个多行文本框 output 表示计算结果

html5新增表单元素和属性

从三方面来介绍html5表单的新特性表单结构更灵活 要提交数据的控件可以布局在form标签之外,看下面的代码,表单元素可以写到form元素之外,只需在元素中加入form="form1"属性,也可提交到form元素指定的服务器地址 <body><form action="upload.php" method="post" accept-charset="utf-8" id="form1"&g

表单元素

1.单行文本框<input type="text"/>(input 的type 属性的默认值就是"text") <input type = "text" name="名称"/> 以下是单行文本框的主要属性: size:指定文本框的宽度,以字符个数为单位:在大多数浏览器中,文本框的缺省宽度是20个字符. value:指定文本框的默认值,是在浏览器第一次显示表单或者用户单击<input type=&q

HTML5 学习笔记(二)——HTML5新增属性与表单元素

目录 一.HTML5新增属性 1.1.contextmenu 1.2.contentEditable 1.3.hidden 1.4.draggable 1.5.data-* 1.6.placeholder占位属性 1.7.required必填属性 1.8.pattern正则属性 1.9.autofocus自动聚焦属性 1.10.autocomplete自动完成属性 1.11.novalidate不验证属性 1.12.multiple多选属性 二.HTML5表单新功能解析 2.1.表单结构更自由

HTML之学习笔记(十)表单元素

html表单元素的基本格式为(必须包含在form标签中) 大致可以分为文本类.按钮类.复选框和单选框.文件选择几类 1.文本类 文本框标签<input type = “text“ />,属性size文本框的宽度.maxlength可输入的最大字节长度.readonly=“readonly”文本只读,无法修改 密码框标签<input type = “password” />,在页面显示为黑色小圆点 隐藏标签(隐藏域)<input type=“hidden” />,不会对页

JQuery表单元素过滤选择器

此选择器主要是对所选择的表单元素进行过滤: 选择器 描述 返回 enabled 选择所有的可用的元素 集合元素 disabled 选择所有的不可用的元素 集合元素 checked 选择所有被选中的元素(单选框,复选框) 集合元素 selected 选择所有被选中选项元素(下拉列表) 集合元素 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd&q

去除表单元素的默认样式

一.使用 appearance 改变 webkit 浏览器的默认外观 webkit 内核浏览器具备私有属性" -webkit-appearance "可以改变元素的外观,该属性非常强大,适合大部分标签,这对于 webkit 的页面优化带来极大的帮助. 禁用表单input.select元素的默认外观 input,select{ -webkit-appearance:none; appearance:none; } 二.使用伪元素改变 IE10 表单元素默认外观 禁用 select 默认下