javascript:<input> 元素

原文章:https://wangdoc.com/javascript/index.html

<input> 元素

<input>元素主要用于表单组件,它继承了 HTMLInputElement 接口。

HTMLInputElement 的实例属性

特征属性

  • name:字符串,表示<input>节点的名称。该属性可读写。
  • type:字符串,表示<input>节点的类型。该属性可读写。
  • disabled:布尔值,表示<input>节点是否禁止使用。一旦被禁止使用,表单提交时不会包含该<input>节点。该属性可读写。
  • autofocus:布尔值,表示页面加载时,该元素是否会自动获得焦点。该属性可读写。
  • required:布尔值,表示表单提交时,该<input>元素是否必填。该属性可读写。
  • value:字符串,表示该<input>节点的值。该属性可读写。
  • validity:返回一个ValidityState对象,表示<input>节点的校验状态。该属性只读。
  • validationMessage:字符串,表示该<input>节点的校验失败时,用户看到的报错信息。如果该节点不需要校验,或者通过校验,该属性为空字符串。该属性只读。
  • willValidate:布尔值,表示表单提交时,该<input>元素是否会被校验。该属性只读。

表单相关属性

  • form:返回<input>元素所在的表单(<form>)节点。该属性只读。
  • formAction:字符串,表示表单提交时的服务器目标。该属性可读写,一旦设置了这个属性,会覆盖表单元素的action属性。
  • formEncType:字符串,表示表单提交时数据的编码方式。该属性可读写,一旦设置了这个属性,会覆盖表单元素的enctype的属性。
  • formMethod:字符串,表示表单提交时的 HTTP 方法。该属性可读写,一旦设置了这个属性,会覆盖表单元素的method属性。
  • formNoValidate:布尔值,表示表单提交时,是否要跳过校验。该属性可读写,一旦设置了这个属性,会覆盖表单元素的formNoValidate属性。
  • formTarget:字符串,表示表单提交后,服务器返回数据的打开位置。该属性可读写,一旦设置了这个属性,会覆盖表单元素的target属性。

文本输入框的特有属性

以下属性只有在<input>元素可以输入文本时才有效。

  • autocomplete:字符串onoff,表示该<input>节点的输入内容可以被浏览器自动补全。该属性可读写。
  • maxLength:整数,表示可以输入的字符串最大长度。如果设为负整数,会报错。该属性可读写。
  • size:整数,表示<input>节点的显示长度。如果类型是textpassword,该属性的单位是字符个数,否则单位是像素。该属性可读写。
  • pattern:字符串,表示<input>节点的值应该满足的正则表达式。该属性可读写。
  • placeholder:字符串,表示该<input>节点的占位符,作为对元素的提示。该字符串不能包含回车或换行。该属性可读写。
  • readOnly:布尔值,表示用户是否可以修改该节点的值。该属性可读写。
  • min:字符串,表示该节点的最小数值或日期,且不能大于max属性。该属性可读写。
  • max:字符串,表示该节点的最大数值或日期,且不能小于min属性。该属性可读写。
  • selectionStart:整数,表示选中文本的起始位置。如果没有选中文本,返回光标在<input>元素内部的位置。该属性可读写。
  • selectionEnd:整数,表示选中文本的结束位置。如果没有选中文本,返回光标在<input>元素内部的位置。该属性可读写。
  • selectionDirection:字符串,表示选中文本的方向。可能的值包括forward(与文字书写方向一致)、backward(与文字书写方向相反)和none(文字方向未知)。该属性可读写。

复选框和单选框的特有属性

如果<input>元素的类型是复选框(checkbox)或单选框(radio),会有下面的特有属性。

  • checked:布尔值,表示该<input>元素是否选中。该属性可读写。
  • defaultChecked:布尔值,表示该<input>元素默认是否选中。该属性可读写。
  • indeterminate:布尔值,表示该<input>元素是否还没有确定的状态。一旦用户点击过一次,该属性就会变成false,表示用户已经给出确定的状态了。该属性可读写。

图像按钮的特有属性

如果<input>元素的类型是image,就会变成一个图像按钮,会有下面的特有属性。

  • alt:字符串,图像无法显示时的替代文本。该属性可读写。
  • height:字符串,表示该元素的高度(单位像素)。该属性可读写。
  • src:字符串,表示该元素的图片来源。该属性可读写。
  • width:字符串,表示该元素的宽度(单位像素)。该属性可读写。

文件上传按钮的特有属性

如果<input>元素的类型是file,就会变成一个文件上传按钮,会有下面的特有属性。

  • accept:字符串,表示该元素可以接受的文件类型,类型之间使用逗号分隔。该属性可读写。
  • files:返回一个FileList实例对象,包含了选中上传的一组File实例对象。

其他属性

  • defaultValue:字符串,表示该<input>节点的原始值。
  • dirName:字符串,表示文字方向。
  • accessKey:字符串,表示让该<input>节点获得焦点的某个字母键。
  • list:返回一个<datalist>节点,该节点必须绑定<input>元素,且<input>元素的类型必须可以输入文本,否则无效。该属性只读。
  • multiple:布尔值,表示是否可以选择多个值。
  • labels:返回一个NodeList实例,代表绑定当前<input>节点的<label>元素。该属性只读。
  • step:字符串,表示在min属性到max属性之间,每次递增或递减时的数值或时间。
  • valueAsDateDate实例,一旦设置,该<input>元素的值会被解释为指定的日期。如果无法解析该属性的值,<input>节点的值将是null
  • valueAsNumber:浮点数,当前<input>元素的值会被解析为这个数值。

HTMLInputElement 的实例方法

  • focus():当前<input>元素获得焦点。
  • blur():移除<input>元素的焦点。
  • select():选中<input>元素内部的所有文本。该方法不能保证<input>获得焦点,最好先用focus()方法,再用这个方法。
  • click():模拟鼠标点击当前的<input>元素。
  • setSelectionRange():选中<input>元素内部的一段文本,但不会将焦点转移到选中的文本。该方法接受三个参数,第一个参数是开始的位置(从0开始),第二个参数是结束的位置(不包括该位置),第三个参数是可选的,表示选择的方向,有三个可能的值(forwardbackward和默认值none)。
  • setRangeText():新文本替换选中的文本。该方法接受四个参数,第一个参数是新文本,第二个参数是替换的开始位置,第三个参数是结束位置,第四个参数表示替换后的行为(可选),有四个可能的值:select(选中新插入的文本)、start(选中的开始位置移到插入的文本之前)、end(选中的文本移到插入的文本之后)、preserve(保留原先选中的位置,默认值)。
  • setCustomValidity():该方法用于自定义校验失败时的报错信息。它的参数就是报错的提示信息。注意,一旦设置了自定义报错信息,该字段就不会校验通过了,因此用户重新输入时,必须将自定义报错信息设为空字符串,请看下面的例子。
  • checkValidity():返回一个布尔值,表示当前节点的校验结果。如果返回false,表示不满足校验要求,否则就是校验成功或不必校验。
  • stepDown():将当前<input>节点的值减少一个步长。该方法可以接受一个整数n作为参数,表示一次性减少n个步长,默认是1。有几种情况会抛错:当前<input>节点不适合递减或递增、当前节点没有step属性、<input>节点的值不能转为数字、递减之后的值小于min属性或大于max属性。
  • stepUp():将当前<input>节点的值增加一个步长。其他与stepDown()方法相同。

下面是setSelectionRange()方法的一个例子。

/* HTML 代码如下
  <p><input type="text" id="mytextbox" size="20" value="HelloWorld"/></p>
  <p><button onclick="SelectText()">选择文本</button></p>
*/

function SelectText() {
  var input = document.getElementById('mytextbox');
  input.focus();
  input.setSelectionRange(2, 5);
}

上面代码中,点击按钮以后,会选中llo三个字符。

下面是setCustomValidity()的例子。

/* HTML 代码如下
  <form id="form">
    <input id="field" type="text" pattern="[a-f,0-9]{4}" autocomplete=off>
  </form>
*/

const form   = document.querySelector('#form');
const field  = document.querySelector('#field');

form.addEventListener('submit', (e) => {
  e.preventDefault(); // 防止这个例子发出 POST 请求
});

field.oninvalid = (event) => {
  event.target.setCustomValidity('必须是一个 4 位十六进制数');
}

field.oninput = (event) => {
  event.target.setCustomValidity('');
}

上面代码中,输入框必须输入一个4位的十六进制数。如果不满足条件(比如输入xxx),按下回车键以后,就会提示自定义的报错信息。一旦自定义了报错信息,输入框就会一直处于校验失败状态,因此重新输入时,必须把自定义报错信息设为空字符串。另外,为了避免自动补全提示框遮住报错信息,必须将输入框的autocomplete属性关闭。

原文地址:https://www.cnblogs.com/wbyixx/p/12499627.html

时间: 2024-08-07 18:41:19

javascript:<input> 元素的相关文章

用Javascript清空(重置)文件类型的INPUT元素的值

之前在StackOverflow回答了这个问题,现在整理到Blog里. 因为安全限制,脚本是不能随意设置其value值的,所以并不能像其它表单输入域那样用属性来设置使其重置. 重置一个文件域的值,归纳起来主要有 3 种方法. 本文分析这三种方法的浏览器兼容性以及优缺点,并给出一个比较完美的综合方案的代码和Demo. 重置文件域的三种方法: 设置value属性为空. 对于IE11以上和其它较新的非IE的现代浏览器Chrome/Firefox/Opera...有效. 克隆或创建一个新的文件输入元素进

HTML5 改良的 input 元素的种类

在HTML5中,增加与改良的input元素中的type属性,包括url.email.date.time.datetime.datetime-local.month.week.number.range.search.tel.color类型. <!DOCTYPE html> <html> <head lang="en"> <title>增加与改良的input元素中的type属性</title> <meta charset=&

JavaScript通过元素id和name直接获取元素的方法

概览: 偶然的机会,我在JavaScript中直接用HTML元素的id属性来获取该元素,并设置该元素的其他属性值,竟然能够正确解析不报错!于是我去查阅相关资料,也有其他同行这么用. 虽然说这种用法不是标准用法,推荐使用 document.getElementById(id);document.getElementByName(name); ,但也是一种新发现,先记录下来,以备后用. 本文讲述了JavaScript通过元素id和name直接获取元素的方法,以及自己在实践过程中总结的注意事项. 具体

07 html 表单form元素 各种input元素 常用元素综合案例

Html的表单元素,主要用途:用户输入数据,并提交给服务器 基本语法是: <form action=”url”(是指把表单提交给谁) method=”提交的方法(get/post),默认是get”> 各种输入元素[输入框,下拉列表,文本域,密码框] </form> 案例:登陆界面 login.html <html> <head> <title>登陆界面</title> </head> <body> <fo

JavaScript实现元素属性的缓冲变化

--------------------------------------------------- 今天给大家分享一个用JavaScript实现 元素的属性缓冲变化效果,代码如下: --------------------------------------------------- 1 //获取样式 2 function getStyle( obj, attr ){ //封装的获取元素样式的函数; 3 4 if(obj.currentStyle){ 5 6 return obj.curre

为什么 input 元素能用 width 属性

前几天在是写网页的时候发现input可以设置宽高,很疑惑,上网查了之后发现: 简单的认为 input 就是 inline 元素是片面的.元素默认以何种 display 属性值显示出来,这个其实更多的时候是由浏览器决定的(不同浏览器的差异性,导致我们需要 reset CSS),下面是部分浏览器 input 元素默认 CSS: IE6.IE7.IE8.IE9(部分) background-color: #FFF; border-width: 2px; font-family: sans-serif;

JavaScript获取元素样式

原生的JavaScript获取写在标签内部的样式很简单: <div class="test" id="test" style="width:100px;">test</div> <script type="text/javascript"> window.onload=function(){ var oTest=document.getElementById("test"

javascript 获取元素样式的方法

javascript 获取元素样式常用方法. Javascript获取CSS属性值方法:getComputedStyle和currentStyle 1 .对于元素的内联CSS样式(<div style="color:#369">hello</div>),可以直接使用element.style.color来直接获取css属性的值: 2. 但是对于外部定义的css样式使用这种方式就无法获取了,而且IE浏览器和其他标准浏览器(Firefox,Chrome,Opera,

jquery监听input元素输入

一般我们监听input内容的变化都是通过onchange()事件来绑定,但这个做法有一个缺陷就是只有当正在被输入的input元素失去焦点时(即鼠标点击了别处)才会触发,而实际上我们往往希望能够满足在用户输入过程中,在保持焦点不变的情况下随着输入内容的变化而触发一定事件处理函数(这样就不用劳烦用户用鼠标再点击以下别的地方). 这种应用场景可以使用jquery的绑定技术 eg. $("#gamount").bind('input propertychange',function(){