목차
JavaScript Forms
디렉토리: JavaScript form
form form
属性
方法
事件
form表单字段
实际应用
选择文本
过滤输入
自动切换焦点
选择框(select, option)
select元素
option元素
웹 프론트엔드 JS 튜토리얼 JavaScript의 양식에 대한 자세한 소개

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

Aug 13, 2017 am 10:30 AM
javascript js 소개하다

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新增属性。<input type="text" autofocus />

    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의 새로운 속성. <input type="text" 자동 초점 />. 이 이벤트를 지원하는 브라우저에는 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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

wapi가 무엇인지에 대한 자세한 소개 wapi가 무엇인지에 대한 자세한 소개 Jan 07, 2024 pm 09:14 PM

사용자들은 인터넷을 사용하면서 와피(wapi)라는 용어를 접했을 수도 있지만, 와피가 무엇인지 모르는 사람들도 있을 것입니다. 다음은 모르는 사람들의 이해를 돕기 위해 자세히 소개한 것입니다. wapi란 무엇입니까? 답변: wapi는 무선 LAN 인증 및 기밀 유지를 위한 인프라입니다. 이는 일반적으로 사무실 건물과 같은 장소 근처에서 보호되는 적외선 및 블루투스와 같은 기능과 같습니다. 기본적으로 소규모 부서가 소유하므로 이 기능의 범위는 불과 몇 킬로미터에 불과합니다. wapi 관련 소개: 1. Wapi는 무선 LAN의 전송 프로토콜입니다. 2. 이 기술은 협대역 통신의 문제를 방지하고 더 나은 통신을 가능하게 합니다. 3. 신호를 전송하는 데는 하나의 코드만 필요합니다.

win11이 PUBG 게임을 실행할 수 있는지에 대한 자세한 설명 win11이 PUBG 게임을 실행할 수 있는지에 대한 자세한 설명 Jan 06, 2024 pm 07:17 PM

PlayerUnknown's Battlegrounds라고도 알려진 Pubg는 2016년 인기를 얻은 이후 많은 플레이어를 끌어모은 매우 고전적인 슈팅 배틀 로얄 게임입니다. 최근 win11 시스템이 출시된 후 많은 플레이어들이 win11에서 플레이하고 싶어합니다. win11이 pubg를 플레이할 수 있는지 편집기를 따라가 보겠습니다. win11이 pubg를 플레이할 수 있나요? 답변: Win11은 pubg를 플레이할 수 있습니다. 1. win11 초기에는 win11에서 tpm을 활성화해야 했기 때문에 많은 플레이어가 pubg에서 금지되었습니다. 2. 하지만 플레이어 여러분의 피드백을 바탕으로 블루홀에서는 이 문제를 해결하였고, 이제 win11에서도 정상적으로 pubg 플레이가 가능해졌습니다. 3. 술집을 만난다면

권장 사항: 우수한 JS 오픈 소스 얼굴 감지 및 인식 프로젝트 권장 사항: 우수한 JS 오픈 소스 얼굴 감지 및 인식 프로젝트 Apr 03, 2024 am 11:55 AM

얼굴 검출 및 인식 기술은 이미 상대적으로 성숙하고 널리 사용되는 기술입니다. 현재 가장 널리 사용되는 인터넷 응용 언어는 JS입니다. 웹 프런트엔드에서 얼굴 감지 및 인식을 구현하는 것은 백엔드 얼굴 인식에 비해 장점과 단점이 있습니다. 장점에는 네트워크 상호 작용 및 실시간 인식이 줄어 사용자 대기 시간이 크게 단축되고 사용자 경험이 향상된다는 단점이 있습니다. 모델 크기에 따라 제한되고 정확도도 제한됩니다. js를 사용하여 웹에서 얼굴 인식을 구현하는 방법은 무엇입니까? 웹에서 얼굴 인식을 구현하려면 JavaScript, HTML, CSS, WebRTC 등 관련 프로그래밍 언어 및 기술에 익숙해야 합니다. 동시에 관련 컴퓨터 비전 및 인공지능 기술도 마스터해야 합니다. 웹 측면의 디자인으로 인해 주목할 가치가 있습니다.

i5 프로세서에 win11을 설치할 수 있는지 여부에 대한 자세한 소개 i5 프로세서에 win11을 설치할 수 있는지 여부에 대한 자세한 소개 Dec 27, 2023 pm 05:03 PM

i5는 인텔이 보유한 프로세서 시리즈로, 11세대 i5의 다양한 버전이 있으며, 세대마다 성능이 다릅니다. 따라서 i5 프로세서가 win11을 설치할 수 있는지 여부는 어떤 세대의 프로세서인지에 따라 별도로 알아보겠습니다. i5 프로세서를 win11과 함께 설치할 수 있습니까? 답: i5 프로세서는 win11과 함께 설치할 수 있습니다. 1. 8세대 및 후속 i51, 8세대 및 후속 i5 프로세서는 Microsoft의 최소 구성 요구 사항을 충족할 수 있습니다. 2. 따라서 Microsoft 웹 사이트에 들어가서 "Win11 설치 도우미"만 다운로드하면 됩니다. 3. 다운로드가 완료된 후 설치 도우미를 실행하고 프롬프트에 따라 Win11을 설치합니다. 2. i51 8세대 이전과 8세대 이후

최신 Win 11 사운드 튜닝 방법 소개 최신 Win 11 사운드 튜닝 방법 소개 Jan 08, 2024 pm 06:41 PM

최신 win11로 업데이트한 후 많은 사용자가 시스템 사운드가 약간 변경되었지만 이를 조정하는 방법을 알지 못합니다. 따라서 오늘 이 사이트에서는 컴퓨터의 최신 win11 사운드 조정 방법을 소개합니다. 작동 방법도 어렵지 않습니다. 선택 사항도 다양합니다. 와서 다운로드하여 사용해 보세요. 최신 컴퓨터 시스템 Windows 11의 사운드 조정 방법 1. 먼저 바탕 화면 오른쪽 하단의 사운드 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "재생 설정"을 선택합니다. 2. 그런 다음 설정을 입력하고 재생 표시줄에서 "스피커"를 클릭합니다. 3. 그런 다음 오른쪽 하단의 "속성"을 클릭하십시오. 4. 속성에서 "향상" 옵션 표시줄을 클릭하세요. 5. 이때 '모든 음향효과 비활성화' 앞의 √가 체크되어 있으면 취소해 주세요. 6. 그 후 아래에서 설정할 음향 효과를 선택하고 클릭하세요.

컴퓨터의 프린터 드라이버 위치에 대한 자세한 정보 컴퓨터의 프린터 드라이버 위치에 대한 자세한 정보 Jan 08, 2024 pm 03:29 PM

많은 사용자가 컴퓨터에 프린터 드라이버를 설치했지만 이를 찾는 방법을 모릅니다. 그래서 오늘은 컴퓨터에서 프린터 드라이버의 위치에 대해 자세히 소개하겠습니다. 아직 모르시는 분들을 위해 원래 의미를 바꾸지 않고 내용을 다시 작성할 때 프린터 드라이버를 찾을 수 있는 위치를 살펴보겠습니다. 언어를 중국어로 다시 작성해야 하며 원래 문장이 표시될 필요는 없습니다. 먼저 타사 소프트웨어를 사용하여 검색하는 것이 좋습니다. 2. 오른쪽 상단에서 "도구 상자"를 찾습니다. 아래의 "장치 관리자"를 클릭하세요. 다시 쓴 문장: 3. 하단의 "장치 관리자"를 찾아 클릭합니다. 4. 그런 다음 "인쇄 대기열"을 열고 프린터 장치를 찾습니다. 이번에는 프린터 이름과 모델입니다. 5. 프린터 장치를 마우스 오른쪽 버튼으로 클릭하면 업데이트하거나 제거할 수 있습니다.

PyCharm 초보자 가이드: 대체 함수에 대한 종합 분석 PyCharm 초보자 가이드: 대체 함수에 대한 종합 분석 Feb 25, 2024 am 11:15 AM

PyCharm은 개발 효율성을 크게 향상시킬 수 있는 풍부한 기능과 도구를 갖춘 강력한 Python 통합 개발 환경입니다. 그 중 교체 기능은 개발 과정에서 자주 사용되는 기능 중 하나로, 개발자가 코드를 빠르게 수정하고 코드 품질을 향상시키는 데 도움을 줄 수 있습니다. 이 기사에서는 초보자가 이 기능을 더 잘 익히고 사용할 수 있도록 특정 코드 예제와 함께 PyCharm의 대체 기능을 자세히 소개합니다. 대체 기능 소개 PyCharm의 대체 기능은 개발자가 코드에서 지정된 텍스트를 빠르게 대체하는 데 도움이 될 수 있습니다.

간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 Jan 05, 2024 pm 06:08 PM

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

See all articles