Làm cách nào tôi có thể thay đổi hoặc xóa thông báo lỗi mặc định xác thực mẫu HTML5?


142

Ví dụ tôi có một textfield. Trường là bắt buộc, chỉ các số được yêu cầu và độ dài của giá trị phải là 10. Khi tôi cố gắng gửi biểu mẫu có giá trị là 5, thông báo lỗi mặc định xuất hiện:Please match the requested format

<input type="text" required="" pattern="[0-9]{10}" value="">
  1. Làm cách nào để thay đổi các thông báo mặc định của biểu mẫu HTML 5 lỗi?
  2. Nếu điểm 1 có thể được thực hiện, vậy có cách nào để tạo một số tệp thuộc tính và đặt trong tệp đó thông báo lỗi tùy chỉnh không?

1
Tôi đã tìm thấy một lỗi trên câu trả lời của Mahoor13, nó không hoạt động trong vòng lặp vì vậy tôi đã sửa nó và đưa ra câu trả lời với một số sửa chữa mà bạn có thể tìm thấy trong phần câu trả lời. Dưới đây là liên kết stackoverflow.com/questions/10361460/ Cách
Darshan Gorasia 15/03/2017

Câu trả lời:


213

Tôi đã tìm thấy một lỗi trên câu trả lời của Ankur và tôi đã sửa nó bằng cách sửa này:

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

Lỗi nhìn thấy khi bạn đặt dữ liệu đầu vào không hợp lệ, sau đó sửa lỗi đầu vào và gửi biểu mẫu. Giáo sư! bạn không thể làm điều này. Tôi đã thử nó trên firefox và chrome


18
Tôi đề nghị không sử dụng các sự kiện nội tuyến. Đó không phải là một thực hành tốt.
Jared

2
@ Mahoor13 Tôi đã viết nó tương tự như vậy, nhưng nó không bao giờ xác nhận. Bạn có thể đưa ra một gợi ý? jsfiddle.net/2USxy
Sliq

1
Ngoài ra còn có một thuộc tính Firefox tùy chỉnh mà bạn có thể thêm, nó hoạt động tốt: x-moz-errormessage = "Vui lòng chỉ nhập số"
coliff

4
tốt hơn là sử dụng "onkeyup" thay vì "onchange" để xem hiệu quả nếu đầu vào hợp lệ hay không.
Jam Ville

4
Điều này có vấn đề sau (ít nhất là trong Chrome 55): khi thông báo không hợp lệ bật lên, nếu người dùng giữ tiêu điểm trong trường không hợp lệ (không nhấp) và chỉnh sửa trường, thông báo sẽ bật ra - ngay cả khi trường hợp lệ - đó là cần thiết để tập trung ra hoặc kích hoạt trình.
leonbloy

96

Khi sử dụng mẫu = nó sẽ hiển thị bất cứ thứ gì bạn đặt trong tiêu đề, vì vậy không yêu cầu JS chỉ cần làm:

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

9
Câu trả lời rất hay. Nhưng như với tất cả mọi thứ HTML5, độ tin cậy phụ thuộc vào trình duyệt. Giải pháp này hoạt động rất tốt với FF 15 và Chrome 22, nhưng không phải với Safari 5. (Đã thử nghiệm với OS X Lion)
james.garriss

1
Câu trả lời hay, nhưng hãy cẩn thận về khả năng tương thích ngược (hoặc thậm chí hiện tại) ở đây.
bohney

7
Khi tôi đặt tiêu đề thành "foo", tôi nhận được "Vui lòng khớp với định dạng được yêu cầu. Foo", vì vậy điều này sẽ không hiệu quả với tôi
Daan

7
Tiêu đề cũng được sử dụng làm văn bản chú giải công cụ trên chuột di chuột, vì vậy tôi sẽ tránh xa phương pháp này.
fotijr

2
Tiêu đề cũng được sử dụng làm văn bản chú giải công cụ trên chuột di chuột, vì vậy đây có lẽ là cách tiếp cận tốt nhất.
OdraEncoding

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

Tôi tìm thấy mã này trong một bài viết khác.


cảm ơn, nó đã làm việc cho tôi Mặc dù tôi không tìm thấy bài viết hoặc blog hoặc trang web đề cập đến điều này.
dùng219628

1
Hãy lưu ý bài đăng sau đây khi xem xét sử dụng setCustomValitidy stackoverflow.com/questions/16867407/
Konstantinos Chertouras

15

HTML:

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

JAVASCRIPT:

function InvalidMsg(textbox) {

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

Fiddle Demo


14

Để ngăn thông báo xác thực trình duyệt xuất hiện trong tài liệu của bạn, với jQuery:

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

13

bạn có thể loại bỏ cảnh báo này bằng cách làm như sau:

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

chỉ cần đặt thông điệp tùy chỉnh thành một khoảng trống



5

SetCustomValids cho phép bạn thay đổi thông báo xác thực mặc định. Đây là một sơ đồ đơn giản về cách sử dụng nó.

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

3

Tôi đã tìm thấy một cách tình cờ Bây giờ: bạn có thể cần sử dụng cách này: lỗi dữ liệu: ""

<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

Tôi đã tìm thấy một lỗi trên câu trả lời của Mahoor13, nó không hoạt động trong vòng lặp nên tôi đã sửa nó bằng cách sửa này:

HTML:

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

Javascript:

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

Nó sẽ chạy hoàn hảo trong vòng lặp.




2

Để đặt thông báo lỗi tùy chỉnh cho sử dụng xác thực HTML 5,

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

và để xóa thông báo này khi người dùng nhập dữ liệu hợp lệ,

onkeyup="setCustomValidity('')"

Hy vọng điều này làm việc cho bạn. Thưởng thức ;)


0

Đây là công việc đối với tôi trong 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')"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.