HTML5 양식 유효성 검사 기본 오류 메시지를 어떻게 변경하거나 제거 할 수 있습니까?


142

예를 들어 textfield. 이 필드는 필수이며 숫자 만 필요하며 값의 길이는 10이어야합니다. 길이가 5 인 값을 가진 양식을 제출하려고하면 기본 오류 메시지가 나타납니다.Please match the requested format

<input type="text" required="" pattern="[0-9]{10}" value="">
  1. HTML 5 양식 유효성 검사 오류 기본 메시지를 어떻게 변경합니까?
  2. 첫 번째 포인트를 수행 할 수있는 경우 일부 특성 파일을 작성하고 해당 파일에 사용자 정의 오류 메시지를 설정하는 방법이 있습니까?

1
Mahoor13 답변에서 버그를 발견했습니다. 루프에서 작동하지 않으므로 수정하고 수정하여 답변 섹션에서 찾을 수 있습니다. 여기 링크 stackoverflow.com/questions/10361460/…
Darshan Gorasia

답변:


213

Ankur 답변에서 버그를 발견 했으며이 수정으로 수정했습니다.

 <input type="text" pattern="[a-zA-Z]+"
    oninvalid="setCustomValidity('Plz enter on Alphabets ')"
    onchange="try{setCustomValidity('')}catch(e){}" />

잘못된 입력 데이터를 설정 한 후 입력을 수정하고 양식을 보낼 때 발생하는 버그입니다. 죄송합니다! 당신은 이것을 할 수 없습니다. 파이어 폭스와 크롬에서 테스트했습니다.


18
인라인 이벤트를 사용하지 않는 것이 좋습니다. 좋은 연습이 아닙니다.
Jared

2
@ Mahoor13 나는 그것과 비슷하게 작성했지만 유효성을 검사하지는 않습니다. 힌트를 줄 수 있습니까? jsfiddle.net/2USxy
Sliq

1
x-moz-errormessage = "숫자 만 입력하십시오"
coliff

4
입력이 유효한지 아닌지를 효과적으로 확인하려면 "onchange"대신 "onkeyup"을 사용하는 것이 좋습니다.
Jam Ville

4
이것은 다음과 같은 문제가 있습니다 (적어도 Chrome 55에서는). 유효하지 않은 메시지가 표시 될 때 사용자가 유효하지 않은 필드에 초점을 유지하고 (클릭하지 않고) 필드를 편집하면 필드가 유효하더라도 메시지가 계속 튀어 나옵니다. 초점을 맞추거나 제출을 트리거하는 데 필요합니다.
leonbloy 2012 년

96

pattern =을 사용하면 제목 속성에 넣은 모든 것을 표시하므로 JS가 필요하지 않습니다.

<input type="text" required="" pattern="[0-9]{10}" value="" title="This is an error message" />

9
아주 좋은 답변입니다. 그러나 HTML5와 마찬가지로 안정성은 브라우저에 따라 다릅니다. 이 솔루션은 FF (15)와 크롬 (22)와 함께 좋은 일을하지만, 사파리 (5)와 (OS X 라이온과 테스트)하지
james.garriss

1
좋은 대답이지만, 이전 버전과의 호환성에주의하십시오.
bohney

7
제목을 "foo"로 설정하면 "요청한 형식과 일치하십시오. foo"가 표시되므로 작동하지 않습니다.
Daan

7
제목은 마우스로 가리키면 툴팁 텍스트로도 사용되므로이 접근 방식을 피하십시오.
fotijr

2
제목은 마우스로 가리키면 툴팁 텍스트로도 사용되므로이 방법이 가장 좋습니다.
OdraEncoded

35
<input type="text" pattern="[a-zA-Z]+"
oninvalid="setCustomValidity('Plz enter on Alphabets ')" />

다른 게시물 에서이 코드를 찾았습니다.


고마워, 그것은 나를 위해 일했다. 나는 이것을 언급하는 게시물이나 블로그 또는 사이트를 찾지 못했습니다.
user219628

1
setCustomValitidy 사용하여 고려할 때 다음과 같은 게시물에 메모를 받아 stackoverflow.com/questions/16867407/...을
콘스탄티노스 Chertouras에게

15

HTML :

<input type="text" pattern="[0-9]{10}" oninvalid="InvalidMsg(this);" name="email" oninput="InvalidMsg(this);"  />

자바 스크립트 :

function InvalidMsg(textbox) {

     if(textbox.validity.patternMismatch){
        textbox.setCustomValidity('please enter 10 numeric value.');
    }    
    else {
        textbox.setCustomValidity('');
    }
    return true;
}

Fiddle Demo


14

jQuery를 사용하여 브라우저 유효성 검사 메시지가 문서에 나타나지 않도록하려면 :

$('input, select, textarea').on("invalid", function(e) {
    e.preventDefault();
});

13

다음을 수행하여이 경고를 제거 할 수 있습니다.

<input type="text" pattern="[a-zA-Z]+"
    oninvalid="setCustomValidity(' ')"
/>

사용자 정의 메시지를 하나의 공백으로 설정하십시오.



5

setCustomValidity를 사용하면 기본 유효성 검사 메시지를 변경할 수 있습니다. 간단한 사용 예는 다음과 같습니다.

var age  =  document.getElementById('age');
    age.form.onsubmit = function () {
    age.setCustomValidity("This is not a valid age.");
 };

3

실수로 지금 방법을 찾았습니다. 다음을 사용해야합니다. data-error : ""

<input type="username" class="form-control" name="username" value=""
placeholder="the least 4 character"
data-minlength="4" data-minlength-error="the least 4 character"
data-error="This is a custom Errot Text fot patern and fill blank"
max-length="15" pattern="[A-Za-z0-9]{4,}"
title="4~15 character" required/>

3

Mahoor13 답변에서 버그를 발견했지만 루프에서 작동하지 않으므로이 수정으로 수정했습니다.

HTML :

<input type="email" id="eid" name="email_field" oninput="check(this)">

자바 스크립트 :

function check(input) {  
    if(input.validity.typeMismatch){  
        input.setCustomValidity("Dude '" + input.value + "' is not a valid email. Enter something nice!!");  
    }  
    else {  
        input.setCustomValidity("");  
    }                 
}  

루프에서 완벽하게 실행됩니다.




2

HTML 5 유효성 검사 사용을위한 사용자 지정 오류 메시지를 설정하려면

oninvalid="this.setCustomValidity('Your custom message goes here.')"

사용자가 유효한 데이터 사용을 입력 할 때이 메시지를 제거하려면

onkeyup="setCustomValidity('')"

이것이 효과가 있기를 바랍니다. 즐겨 ;)


0

이것은 Chrome에서 나를 위해 작동합니다.

    <input type="text" name="product_title" class="form-control" 
required placeholder="Product Name" value="" pattern="([A-z0-9À-ž\s]){2,}"
oninvalid="setCustomValidity('Please enter on Producut Name at least 2 characters long')"

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.