텍스트 상자를 대문자로 자동 설정하는 방법


131

다음 스타일 속성을 사용하여 사용자 입력을 대문자로 설정하여 사용자가 텍스트 상자에 입력을 시작할 때 예를 들어 railwayRAILWAY Caps-lock 버튼을 누르지 않고도 대문자로 변경해야 합니다.

이것은 입력에 사용하는 코드입니다.

<input type = "text" class = "normal" name = "Name" size = "20" maxlength = "20"> <img src="../images/tickmark.gif" border="0" style='text-transform:uppercase'/>

그러나이 속성을 사용하여 원하는 출력을 얻지 못했습니다.


2
아래에 언급 한 바와 같이 =와 값 사이에 공백을
Jonathan Safa

답변:


261

당신은 넣어 한 style온 속성을 <img>대신에, 태그 <input>.

속성 이름과 값 사이에 공백을 두는 것도 좋지 않습니다 ...

<input type="text" class="normal" 
       name="Name" size="20" maxlength="20" 
       style="text-transform:uppercase" /> 
<img src="../images/tickmark.gif" border="0" />

이 변환은 순전히 시각적이며 POST에서 전송 된 텍스트를 변경하지 않습니다.


67
POST를 통해이 데이터를 보내면 입력 한 내용이 아니라 화면에 표시되는 방식이 아니라 보내집니다.
Vincent Poirier

@freefaller, 모든 입력을 대문자로 변경했지만 mysql에 삽입하는 것은 소문자 텍스트이며 대문자를 변경하는 방법!
David Jaw Hpan

6
@David는 이전 의견을 참조하십시오. 변형은 순전히 시각적입니다. 서버로 다시 전송되는 기본 텍스트의 경우는 변경되지 않습니다. 텍스트를 대문자로 저장하려면 저장하기 전에 서버에서 텍스트를 변환해야합니다.
freefaller

7
플레이스 홀더가 이제 대문자이므로 대부분의 솔루션은 아닙니다. JavaScript를 사용하는 것 외에 다른 방법은 없습니다.
tomericco

1
순전히 시각적 인 것이 아니라 가치를 변경하려는 미래의 독자는 Burak Tokak의 답변을 참조하십시오 .
Dinei

58

대문자로 게시되도록하는 가장 강력한 솔루션은 다음과 같이 oninput 메서드를 인라인으로 사용하는 것입니다.

<input oninput="this.value = this.value.toUpperCase()" />

편집하다

일부 사람들은 값을 편집 할 때 커서가 끝으로 이동한다고 불평 했으므로이 약간 확장 된 버전은

<input oninput="let p=this.selectionStart;this.value=this.value.toUpperCase();this.setSelectionRange(p, p);" />


36

text-transformation:uppercase스타일링에 대한 답변 은 제출시 서버에 대문자 데이터를 보내지 않습니다. 대신 다음과 같이 할 수 있습니다.

입력 HTML의 경우 onkeydown을 사용하십시오.

<input name="yourInput" onkeydown="upperCaseF(this)"/>

자바 스크립트에서 :

function upperCaseF(a){
    setTimeout(function(){
        a.value = a.value.toUpperCase();
    }, 1);
}

으로 upperCaseF()모든 키를 눌러 내려 함수 입력의 값은 대문자 형태로 전환 할 것이다.

또한 키 다운 이벤트가 발생한 후 함수 코드 블록이 트리거되도록 1ms 지연을 추가했습니다.


4
하나는 사용할 수 이벤트 대신을 하고 제거 해결. inputkeydownsetTimeout
Dinei

1
이것은 작동하지만 못생긴 두 번째 소문자 대 대문자 점프를 피하는 방법은 무엇입니까?
Jonathan Safa

7
받는 사람이 속성을 추가하여 "입력 이벤트"아이디어가는 input요소 것은 잘 작동하는 것 같다 :oninput="this.value = this.value.toUpperCase()"
토미 스탠튼

3
@JonathanSafa 사용은뿐만 아니라이 text-transform:uppercase입력을 만드는 위의 CSS 스타일 솔루션 항상 대문자로 표시
miknik

1
사용자가 기존 텍스트를 편집하고 커서를 끝 이외의 다른 곳에 놓으면 커서는 모든 문자를 입력 할 때마다 끝으로 이동합니다. 커서 위치를 유지하고 텍스트를 대문자로 변환하는 방법이 있습니까?
Mike Wodarczyk

17

첫 번째 대답의 문제는 자리 표시 자도 대문자라는 것입니다. 입력 만 대문자로하려면 다음 해결 방법을 사용하십시오.

비어 있지 않은 입력 요소 만 선택하려면 요소에 필수 속성을 넣으십시오.

<input type="text" id="name-input" placeholder="Enter symbol" required="required" />

이제 선택하려면 :valid의사 요소를 사용하십시오 .

#name-input:valid { text-transform: uppercase; }

이렇게하면 대문자 만 입력됩니다.


4
이 답변은 작동하지 않으며 의미가 없습니다. 입력이 유효한 경우에만 선택이 자리 표시자가 아닌 입력 텍스트에 영향을 미치는 이유는 무엇입니까? blank가 유효한 값이 아닌 경우 우연히 작동 할 수 있습니다. 여기에 답을 사용했습니다 : stackoverflow.com/questions/25180140/…
Ben Thurley

6
내 솔루션은 필수 텍스트 입력 필드에만 효과적입니다. 일반화하려고하면 작동하지 않습니다. 위의 질문에 대답합니다. 아마도 다른 질문을하고있을 것입니다.
tomericco

이것은 정말 유용한 솔루션이며 정확히 내가 필요한 것입니다. 필요한 분야에 따라 다르므로 모든 상황에 적합하지는 않지만 도구 상자에 있으면 편리합니다!
Tim Mackey

9

시험

<input type="text" class="normal" 
       style="text-transform:uppercase" 
       name="Name" size="20" maxlength="20"> 
 <img src="../images/tickmark.gif" border="0"/>

이미지가 아닌 입력에 쓰고 있기 때문에 이미지 대신 스타일 태그를 입력하십시오.


4
그러나 이는 또한 자리 표시 자 텍스트를 대문자로 만듭니다.
Kazim Zaidi

5

모든 텍스트 상자를 대문자로 설정하려면 다음 스타일 설정

input {text-transform: uppercase;}

3

CSS 스타일링의 문제는 데이터를 변경하지 않고 JS 기능을 원하지 않으면 시도해보십시오 ...

<input onkeyup="this.value = this.value.toUpperCase()" />

그 자체로는 필드가 키업을 활용하는 것을 볼 수 있으므로 이것을 style='text-transform:uppercase'다른 제안 과 결합하는 것이 바람직 할 수 있습니다 .


2

CSS를 사용 text-transform: uppercase하면 실제 입력이 변경되지 않고 모양 만 변경됩니다. 입력 데이터를 서버로 보내면 여전히 소문자이거나 입력 한 것입니다. 실제로 입력 값을 변환하려면 아래와 같이 자바 스크립트 코드를 추가해야합니다.

document.querySelector("input").addEventListener("input", function(event) {
  event.target.value = event.target.value.toLocaleUpperCase()
})
<input>

여기 toLocaleUpperCase()에 변환 하는 데 사용 하고 있습니다input 값을 대문자 있습니다. 입력 한 내용을 편집해야 할 때까지 잘 작동합니다. 예를 들어 ABCXYZ를 입력 한 후 ABCLMNXYZ로 변경하려고하면 모든 입력 후 커서가 끝으로 이동하기 때문에 ABCLXYZMN이됩니다.

커서의이 점프를 극복하기 위해 우리는 기능을 다음과 같이 변경해야합니다.

document.querySelector("input").addEventListener("input", function(event) {
  var input = event.target;
  var start = input.selectionStart;
  var end = input.selectionEnd;
  input.value = input.value.toLocaleUpperCase();
  input.setSelectionRange(start, end);
})
<input>

이제 모든 것이 예상대로 작동하지만 PC 속도가 느리면 입력 할 때 소문자에서 대문자로 텍스트가 이동하는 것을 볼 수 있습니다. 이것이 당신을 귀찮게한다면, 이것은 CSS를 사용할 때이며 input: {text-transform: uppercase;}CSS 파일에 적용 하면 모든 것이 잘 될 것입니다.


1

이것은 입력을 대문자로 표시하고 포스트를 통해 입력 데이터를 대문자로 보냅니다.

HTML

<input type="text" id="someInput">

자바 스크립트

var someInput = document.querySelector('#someInput');
someInput.addEventListener('input', function () {
    someInput.value = someInput.value.toUpperCase();
});

0

아무도 그것을 제안하지 않았다 :

자리 표시 자와 함께 CSS 솔루션을 사용하려면 자리 표시자를 개별적으로 스타일 지정하면됩니다. IE 호환성을 위해 두 자리 표시 자 스타일을 분할하십시오.

input {
    text-transform: uppercase;
}
input:-ms-input-placeholder {
    text-transform: none;
}
input::placeholder {
    text-transform: none;
}
The below input has lowercase characters, but all typed characters are CSS-uppercased :<br/>
<input type="text" placeholder="ex : ABC" />


0

아래 해결책을 시도하십시오. 사용자가 첫 번째 색인의 입력 필드에 빈 공간 만 입력하면주의를 기울입니다.

document.getElementById('capitalizeInput').addEventListener("keyup",   () => {
  var inputValue = document.getElementById('capitalizeInput')['value']; 
  if (inputValue[0] === ' ') {
      inputValue = '';
    } else if (inputValue) {
      inputValue = inputValue[0].toUpperCase() + inputValue.slice(1);
    }
document.getElementById('capitalizeInput')['value'] = inputValue;
});
<input type="text" id="capitalizeInput" autocomplete="off" />


-2
<script type="text/javascript">
    function upperCaseF(a){
    setTimeout(function(){
        a.value = a.value.toUpperCase();
    }, 1);
}
</script>

<input type="text" required="" name="partno" class="form-control" placeholder="Enter a Part No*" onkeydown="upperCaseF(this)">

4
이 답변은 이미 제공된 모든 답변과 어떻게 구별됩니까?
염소 자리
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.