2017-09-28 8 views
0

私はフォームを作成しようとしており、パターンフィールドとタイトルフィールドをJSを使ってプログラム的に設定しようとしています。なぜ誰かがこれがうまくいかない理由を考えて助けてくれますか? 以下のコードでは、フォームフィールドには何も入力できず、「要求されたフォーマットと一致する」というポップアップエラーが表示されます。 ウェブフォームのパターンとタイトルが機能しない

+3

でエスケープする必要があります。 Webコンソールで結果のHTMLを調べると、 'pattern'属性が' 'd + ''に終わることがわかります – Hamms

+0

これで検証を修正して、番号を入力できるようになりました。 "sgdf"のようなものを入力してみてください。私はまだ "6つ以上の文字"ではなく、 "要求されたフォーマットと一致する"というポップアップエラーが表示されます。 –

+0

[HTML5の入力パターンが通過しない場合にカスタムメッセージを作成するにはどうすればよいですか?](https://stackoverflow.com/questions/19122886/how-can-i-create-a-custom-message- when-an-html5-required-input-pattern-does-not) – CBroe

答えて

1

\

var node = document.getElementById("text"); 
 
node.setAttribute("pattern", "\d+"); 
 
node.setAttribute("title", "Six or more characters");
<p>A form with a password field that must contain a positive integer:</p> 
 
<form action="/action_page.php"> 
 
    Enter a number: <input type="text" id="text" name="text"> 
 
    <input type="submit"> 
 
</form>

は、エスケープ文字です。あなたが \を書きたい場合、あなたはあなたがあなたのバックスラッシュをエスケープする必要が \\

var node = document.getElementById("text"); 
 
node.setAttribute("pattern", "\\d+"); 
 
node.setAttribute("title", "Six or more characters"); 
 
node.setAttribute("oninvalid", "setCustomValidity('Six or more characters')"); 
 
// this line is needed to clear the error status onchange, so user can enter newly correct input 
 
node.setAttribute("onchange", "try{setCustomValidity('')}catch(e){}");
<p>A form with a password field that must contain a positive integer:</p> 
 
<form action="/action_page.php"> 
 
    Enter a number: <input type="text" id="text" name="text"> 
 
    <input type="submit"> 
 
</form>

+0

ありがとうございます。また、あなたの例は、d +の後に余分な\を持っているので動かない。 –

+0

また、一部のアルファベット文字を入力すると、「6つ以上の文字」ではなく、「要求されたフォーマットに一致する」というポップアップエラーが表示されます。 title属性が機能しない理由を知っていますか? –

+0

あなたは正しいです、それはタイプミスでした。エラーメッセージについて、私の編集した答えを確認してください。 – AVAVT

関連する問題