>  기사  >  웹 프론트엔드  >  JavaScript의 양식에 대한 자세한 소개

JavaScript의 양식에 대한 자세한 소개

黄舟
黄舟원래의
2017-08-13 10:30:342103검색

JavaScript Forms

이 글의 주요 목적은 폼 기본 사항, 텍스트 상자 스크립트 관련 사용법, 선택 상자 스크립트 관련 사용법 및 기타 지식 등 폼 관련 지식을 소개하는 것입니다. 최신 웹 개발에서는 양식 기본 동작이 양식 데이터를 제출하는 데 거의 사용되지 않지만 대신 기본 동작이 비활성화된 다음 Ajax를 사용하여 POST 요청을 통해 양식 데이터를 비동기적으로 제출합니다. 그러나 이것이 더 이상 형식이 중요하지 않다는 의미는 아닙니다. JavaScript는 양식 필드의 값을 빠르게 얻을 수 있는 많은 속성과 메서드를 제공하기 때문에 양식은 여전히 ​​양식을 제출하는 가장 빠른 방법입니다. 그러므로 여전히 형태를 이해하고 숙달하는 것이 필요합니다.

디렉토리: JavaScript form

  • form form

    • property

    • method

    • event

  • 양식 필드에는 입력, 버튼, 선택이 포함됩니다. , 텍스트 영역, 다음 속성 메소드 이벤트는 모든 양식 필드에 공통됩니다.)

    • Attributes

    • Methods

    • Events

  • 텍스트 상자(입력, 텍스트 영역)

    • 텍스트 선택

    • 필터 입력

    • 자동으로 포커스 전환

    • 속성

    • 실용적용

  • 선택 상자(선택, 옵션)

form form

id를 통해 HTML의 Form 태그 가져오기 , 클래스, 이름 속성을 획득하거나 양식 태그를 통해 직접 획득합니다. 물론 document.forms를 사용하여 HTML의 모든 양식 요소를 얻을 수도 있으며 NodeList 객체가 반환됩니다. document.forms获取HTML中所有表单元素,会返回一个NodeList对象。

属性

说一个重要的

elements: document.forms[0].elements 返回类数组对象,包含该form表单下所有表单字段。可以通过表单字段的name属性或者索引访问.

let form = document.forms[0]
form.element[0] === form.element['index-0']
方法

在form表单上的方法有submit、reset方法。在现代web开发中,都会阻止form表单提交的默认行为。当没有参数时,可以在不点击按钮的情况下将所有表单字段的值向服务器提交数据。通常,存在以下三种按钮可以提交表单数据。

<input type="submit" value=&#39;提交&#39; />
<button type=&#39;submit&#39;>提交</button>
<input type="image" src=&#39;pic.png&#39; />
事件

submit: 当给form表单绑定submit事件,在点击图像按钮或者type为submit的按钮会提交表单数据。此时可以通过事件对象阻止表单全局提交的默认行为。在提交表单时,为避免用户多次点击导致多次提交的问题,可以在提交后禁用提交按钮。

form表单字段

属性

都比较简单,有如下:

  • name

  • value

  • form: 指向当前表单元素,只读。

  • type

  • readOnly

  • disabled

  • autofocus: 自动获得焦点。HTML5新增属性。f8bd9dad7d0d93416385d703902e58f1

    Attributes
중요한
요소를 말해 보세요. document.forms[0].elements 양식 아래의 모든 양식 필드를 포함하여 배열과 유사한 객체를 반환합니다. 양식 필드의 이름 속성이나 인덱스를 통해 액세스할 수 있습니다.

document.addEventLitener(&#39;DOMContentLoaded&#39;, e => {
    let input = docuemnt.querySelector(&#39;.input-1&#39;)
    input.focus()
}, false)

Method
양식의 메소드에는 제출 및 재설정 메소드가 포함됩니다. 최신 웹 개발에서 기본 동작은 양식 제출을 방지하는 것입니다. 매개변수가 없으면 버튼을 클릭하지 않고도 모든 양식 필드의 값을 서버에 제출할 수 있습니다. 일반적으로 양식 데이터를 제출할 수 있는 버튼에는 세 가지 유형이 있습니다.

let input = document.querySelector(&#39;.input-0&#39;)
input.addEventListener(&#39;focus&#39;, e => {
    e.target.style.backgroundColor = &#39;#ccc&#39;
}, false)
input.addEventListener(&#39;blur&#39;, e => {
    e.target.style.backgroundColor = &#39;#fff&#39;
}, false)

Event

submit: 제출 이벤트를 양식에 바인딩할 때 이미지 버튼이나 제출 유형 버튼을 클릭하면 양식 데이터가 제출됩니다. 이때, 이벤트 객체를 통해 폼의 전역 제출의 기본 동작을 방지할 수 있습니다. 양식을 제출할 때 사용자의 여러 번의 클릭으로 인해 발생하는 다중 제출 문제를 방지하기 위해 제출 후 제출 버튼을 비활성화할 수 있습니다.

form form fields

attributes
는 다음과 같이 비교적 간단합니다.
  • name
  • value
  • form: 현재 양식 요소를 가리키며 읽기 전용입니다.
  • type
  • readOnly
  • disabled
  • 자동 초점: 자동으로 초점을 얻습니다. HTML5의 새로운 속성. efcab36785179b8474d11e589d534ef3. 이 이벤트를 지원하는 브라우저에는 IE10+, Chrome 및 Firefox가 포함됩니다. 따라서 지원되는 브라우저의 자동 초점은 true를 반환하고, 지원되지 않는 경우 빈 문자열을 반환합니다.
    • Methods

    • focus(), Blur(): 일반적으로 Blur 메소드와 함께 사용됩니다. 예를 들어 DOMContentLoaded 이벤트 후에는 사용자가 직접 입력할 수 있도록 입력 요소에 포커스가 부여되도록 합니다.
    • // type为number时,可以指定min,max,step(表示某个值得倍数)属性
      <input type="number" min=&#39;0&#39; max=&#39;100&#39; step=&#39;5&#39; name=&#39;count&#39;>
      // 此时正则默认添加了^, $,即以下正则等于&#39;^\d+$&#39;
      <input type=&#39;text&#39; pattern=&#39;\d+&#39;>

      Event

    • focus, Blur 이벤트: 실제 비즈니스에서는 Focus와 Blur 이벤트를 조합하여 사용할 수 있습니다. 입력 노드에 포커스가 생기면 입력 요소의 색상을 변경합니다. 초점을 잃었을 때 배경색을 재설정합니다.
    • // 当input元素获得焦点是选择文本
      let input = document.querySelector(&#39;.input-1&#39;)
      input.addEventListener(&#39;focus&#39;, e => {
          e.target.select()
      }, false)

      change 이벤트: 입력 및 텍스트 영역 요소의 경우 포커스를 받는 상태에서 포커스를 잃는 상태로 변경되고 값이 변경될 때 변경 이벤트가 트리거됩니다. 선택 요소의 경우 값이 변경될 때마다 변경 이벤트가 트리거됩니다. 즉, 포커스를 잃지 않고 변경 이벤트가 트리거됩니다. 이 세부 사항에는 주의가 필요합니다.

    • 텍스트 상자(입력, 텍스트 영역)
  • 위 양식 필드의 공통 속성 및 메서드 외에도 텍스트 상자에는 몇 가지 고유한 속성과 텍스트를 작동하는 몇 가지 메서드가 있습니다.

    Attributes
  • maxlength: 최대 입력 길이🎜🎜🎜🎜size: 텍스트 상자에 표시할 수 있는 문자 수🎜🎜🎜🎜cols: 텍스트 영역 열 수🎜🎜🎜🎜rows: 텍스트 상자 수 textarea 행🎜🎜🎜 🎜·· ····· 다음은 HTML5······🎜🎜🎜🎜의 새로운 제약 조건 유효성 검사 API입니다. 필수: 필수 옵션입니다. typeaMail : Default Verification 🎜🎜🎜🎜URL : URL 패턴 🎜🎜🎜🎜버 : 숫자 만 입력 할 수 있습니다. IE10+ 이상 브라우저에서 지원됩니다. 🎜🎜🎜🎜checkValidity 메소드: document.forms[0]에 이 메소드를 바인딩하여 전체 양식 필드가 유효한지 확인합니다. 유효한 경우 true를 반환합니다. 그렇지 않으면 false를 반환합니다. 🎜
    // type为number时,可以指定min,max,step(表示某个值得倍数)属性
    <input type="number" min=&#39;0&#39; max=&#39;100&#39; step=&#39;5&#39; name=&#39;count&#39;>
    // 此时正则默认添加了^, $,即以下正则等于&#39;^\d+$&#39;
    <input type=&#39;text&#39; pattern=&#39;\d+&#39;>
实际应用

选择文本

1.select方法:input和textarea元素都支持selct方法。这个方法不接受任何参数,表示选择某个文本框元素的所有文本

// 当input元素获得焦点是选择文本
let input = document.querySelector(&#39;.input-1&#39;)
input.addEventListener(&#39;focus&#39;, e => {
    e.target.select()
}, false)

2.setSelectionRange方法:这个方法用于选择部分文本内容。接受两个参数,起始位置和结束位置。HTML5新增的方法。IE9+以上浏览器支持。

// 当input获得焦点时,选择文本中的第二个值
let input = document.querySelector(&#39;.input-1&#39;)
input.addEventListener(&#39;focus&#39;, e => {
  let target = e.target
  console.log(target.setSelectionRange(1, 2))
}, false)

3.select事件:当文本框元素中的文本被选中时,就会触发select事件。只要选中文本就会触发,不需要全选。

4.selectionStart, selectionEnd属性:这两个属性用于或者用户选中的文本内容。因此,可以与select事件结合使用,获取用户选中的文本内容。HTML5新增的两个属性。IE9+以上浏览器支持。

let input = document.querySelector(&#39;.input-1&#39;)
input.addEventListener(&#39;select&#39;, e => {
    let target = e.target
    let start = target.selectionStart
    let end = target.selectionEnd
    console.log(target.value.slice(start, end))
}, false)

过滤输入

文本框的过滤输入主要是某些文本的输入是有条件的。比如说需要input元素中只允许输入数字。这时候就需要用到文本的过滤。基本思路如下

1.通过监听keypress事件,判断输入时的字符是否是数字。通过charCode判断。keypress事件会在用户按下键盘上的【字符键】时触发。

2.如果不是,则取消默认行为,即取消文本的输入。

let input = document.querySelector(&#39;.input-1&#39;)
input.addEventListener(&#39;keypress&#39;, e => {
  let charCode = e.charCode
  if (!/[\d+.+-]/g.test(String.fromCharCode(charCode))) {
    e.preventDefault()
  }
}, false)

此方法通过charCode属性来判断用户输入的字符是否是数字字符,如果是则可以输入,如果不是则禁止输入。这里要注意的是,不能通过input的value属性来判断。因为keydown和keypress事件会在value改变之前触发,而keyup事件则是在value发生改变之后触发。因此,keypress获取value值是上一次的值,但是keypress事件可以获取到按下键盘时的charCode属性,然后通过String对象的fromCharCode转成对应的字符,根据此字符做一次正则验证即可。同时,charCode属性只有在keypress事件才存在,在keydown和keyup事件中都会返回0。

自动切换焦点

这种应用主要用于手机号码上。如手机号码可以分为'334'的结构。因此可以创建三个input,当输入完毕时自动切换焦点到下一个input上。

// 必须设置最大值
<input type="text" name=&#39;text1&#39; maxlength="3">
<input type="text" name=&#39;text2&#39; maxlength="3">
<input type="text" name=&#39;text3&#39; maxlength="4">
// 当value的length等于maxleng时,发生跳转
function judge (len, max, target, form) {
  if (len === max) {
    let length = form.elements.length
    for (let i = 0; i < length; i++) {
      if (target === form.elements[i]) {
        if (form.elements[i + 1]) {
          form.elements[i + 1].focus()
        }
      }
    }
  }
}
// 给三个input绑定keyup事件,通过事件代理方式。
document.addEventListener(&#39;keyup&#39;, e => {
  let target = e.target
  let form = target.form
  let len = target.value.length
  let maxLen = target.maxLength
  switch (target.name) {
    case &#39;text1&#39;:
      judge(len, maxLen, target, form)
      break
    case &#39;text2&#39;:
      judge(len, maxLen, target, form)
      break
    case &#39;text3&#39;:
      judge(len, maxLen, target, form)
      break
  }
}, false)

选择框(select, option)

选择框是通过select和option元素组合而成的。除了表单字段共有的属性和方法之外,在这两个元素上提供了其他的属性和方法。目的是为了更加方便的操作选择框元素。

select元素
  • add(newOption, targetOption):在select元素上有add方法,向select元素插入新的option元素。传入两个参数:新的option元素和目标option元素。

  • multiple属性: 是否允许多项选择。如果未添加此属性,则select元素的type属性为'select-one'。否则为'select-multiple'。

  • options属性:取得该select元素下的所有options元素。返回一个类数组对象。

  • selectedIndex属性: 选中options元素的索引值。

  • size属性: 可见的行数

  • value属性: 发送到服务器的值,如果没有这个属性,则会取innerText的值。

option元素
  • index: 索引值

  • label: 当前选项的标签

  • selected: 被选中的option元素

  • text: 文本

  • value: 发送到服务器的值

위 내용은 JavaScript의 양식에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.