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/...は
ダルシャンGorasia

回答:


213

Ankurの回答にバグを見つけました。この修正で修正しました。

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

無効な入力データを設定し、入力を修正してフォームを送信したときに見られるバグ。おっとっと!これはできません。私はそれをFirefoxとChromeでテストしました


18
インラインイベントの使用はお勧めしません。それは良い習慣ではありません。
Jared

2
@ Mahoor13私はそれと同じように書きましたが、検証されません。ヒントをくれますか?jsfiddle.net/2USxy
Sliq

1
追加できるカスタムFirefoxプロパティもあります:x-moz-errormessage = "数字のみを入力してください"
coliff

4
「onchange」ではなく「onkeyup」を使用して、入力が有効かどうかを効果的に確認することをお勧めします。
Jam Ville

4
これには次の問題があります(少なくともChrome 55では):無効なメッセージがポップアップ表示されたとき、ユーザーが無効なフィールドに(クリックせずに)フォーカスを保持してフィールドを編集すると、フィールドが有効な場合でもメッセージがポップアップ表示され続けますフォーカスアウトするか、送信をトリガーする必要があります。
leonbloy 2017年

96

pattern =を使用すると、title属性に入力したものがすべて表示されるため、JSは必要ありません。

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

9
とてもいい答えです。しかし、すべてのHTML5と同様に、信頼性はブラウザーに依存します。このソリューションはFF 15とChrome 22ではうまく機能しましたが、Safari 5ではうまく機能しませんでした(OS X Lionでテスト済み)
james.garriss

1
いい答えですが、ここでは下位互換性(または現在の互換性)に注意してください。
bohney

7
タイトルを「foo」に設定すると、「要求された形式に一致してください。foo」と表示されるため、これは機能しません
Daan

7
タイトルはマウスホバーのツールチップテキストとしても使用されるため、このアプローチは避けます。
fotijr 2015年

2
タイトルはマウスホバーのツールチップテキストとしても使用されるため、これがおそらく最良の方法です。
OdraEncoded 2015

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

このコードは別の投稿で見つけました。


おかげで、うまくいきました。これについて言及している投稿、ブログ、サイトは見つかりませんでした。
user219628 2016年

1
setCustomValitidy使用することを検討する場合は、次のポストに注意してくださいstackoverflow.com/questions/16867407/...を
コンスタンティノス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

jQueryを使用して、ブラウザー検証メッセージがドキュメントに表示されないようにするには:

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

13

次の手順でこのアラートを削除できます。

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

カスタムメッセージを1つの空白スペースに設定するだけです



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

JavaScript:

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.