HTML5 form doğrulaması varsayılan hata iletilerini nasıl değiştirebilir veya kaldırabilirim?


142

Mesela bir textfield. Alan zorunludur, yalnızca sayılar gereklidir ve değer uzunluğu 10 olmalıdır. 5 olan bir değer içeren form göndermeye çalıştığımda, varsayılan hata mesajı görüntülenir:Please match the requested format

<input type="text" required="" pattern="[0-9]{10}" value="">
  1. HTML 5 form doğrulama hatalarının varsayılan iletilerini nasıl değiştirebilirim?
  2. 1. nokta yapılabilirse, bazı özellik dosyaları oluşturmanın ve bu dosyalarda özel hata mesajlarını ayarlamanın bir yolu var mı?

1
Mahoor13 yanıtında bir hata buldum, döngüde çalışmıyor, bu yüzden düzeltdim ve cevap bölümünün altında bulabileceğiniz bazı düzeltmelerle cevap verdim. İşte stackoverflow.com/questions/10361460/…
Darshan Gorasia

Yanıtlar:


213

Ankur yanıtında bir hata buldum ve bu düzeltmeyle düzelttim:

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

Geçersiz bir giriş verisi ayarladığınızda, sonra girdiyi düzeltin ve formu gönderin. ayy! bunu yapamazsın. Firefox ve Chrome'da test ettim


18
Satır içi olayları kullanmamayı öneririm. İyi bir uygulama değil.
Jared

2
@ Mahoor13 Buna benzer bir şey yazdım ama asla geçerli değil. Bir ipucu verebilir misin? ABD
Sliq

1
Ekleyebileceğiniz, iyi çalışan özel bir Firefox özelliği de vardır: x-moz-
errormessage

4
girişin geçerli olup olmadığını etkili bir şekilde görmek için "onchange" yerine "onkeyup" kullanmak daha iyidir.
Jam Ville

4
Bunun şu sorunu vardır (en azından Chrome 55'te): geçersiz mesaj açıldığında, kullanıcı geçersiz alana odaklanmaya devam ederse (tıklamadan) ve alanı düzenlerse, alan geçerli olsa bile mesaj çıkarılmaya devam eder odaklanmak veya gönderimi tetiklemek için gereklidir.
leonbloy

96

Pattern = komutunu kullanırken title özelliğine koyduğunuz her şeyi görüntüler, bu nedenle JS gerekmez:

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

9
Çok güzel bir cevap. Ancak HTML5'teki her şeyde olduğu gibi, güvenilirlik tarayıcıya bağlıdır. Bu çözüm FF 15 ve Chrome 22 ile harika çalıştı, ancak Safari 5 ile işe yaramadı. (OS X Lion ile test edildi)
james.garriss

1
Güzel bir yanıt, ancak burada geriye dönük (hatta güncel) uyumluluk konusunda dikkatli olun.
bohney

7
Bir başlığı "foo" olarak belirlediğimde "İstenen biçimi eşleştirin. Foo", bu yüzden bu benim için çalışmaz
Daan

7
Başlık ayrıca fare imlecinde araç ipucu metni olarak kullanılır, bu yüzden bu yaklaşımdan uzak dururum.
fotijr

2
Başlık, fareyle üzerine gelindiğinde araç ipucu metni olarak da kullanılır, bu nedenle bu muhtemelen en iyi yaklaşımdır.
OdraEncoded


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

Tarayıcı doğrulama mesajının belgenizde jQuery ile görünmesini önlemek için:

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

13

bu uyarıyı aşağıdakileri yaparak kaldırabilirsiniz:

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

özel mesajı bir boşluk olarak ayarlamanız yeterlidir



5

SetCustomValidity, varsayılan doğrulama mesajını değiştirmenize izin verir.İşte nasıl kullanılacağına dair basit bir örnek.

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

3

Yanlışlıkla Şimdi bir yol buldum: Bunu kullanmanız gerekebilir: 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 yanıtında bir hata buldum, döngüde çalışmıyor, bu yüzden bu düzeltmeyle düzelttim:

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("");  
    }                 
}  

Mükemmel döngü içinde çalışacaktır.




2

HTML 5 doğrulama kullanımı için özel hata mesajı ayarlamak üzere,

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

ve kullanıcı geçerli veri kullanımına girdiğinde bu mesajı kaldırmak için,

onkeyup="setCustomValidity('')"

Umarım bu işe yarar. Zevk almak ;)


0

Bu benim için Chrome'da iş

    <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')"

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.