web-dev-qa-db-ja.com

Comment_author_urlおよびHTML5入力プレースホルダーに関するコメントフォームの問題

私は2つの異なるバージョンのWordPressを実行している2つのサイトでHTML5を使用しています。それらは両方とも同じ振る舞いを示します、そして私はこれを直すのを手伝ってほしいと思います。

<label for="url">Website</label> <input type="url" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" placeholder="Enter Website Address (optional)" pattern="https?://.+">

テストでは、URLを入力しないと発生するcomment_author_urlの問題を確認しました。何らかの理由で、WordPressはプレースホルダーのテキストを選択してデータベースに保存しています。

http:// EnterWebsiteAddress(オプション

なぜこれが起こっているのか特定しようとして、私は本当に苦労しています。 placeholder属性は入力値の内側にはないので、取得されるべきではありません。この同じコードが他のアプリケーションで問題なく使用されています。

誰もがWordPressでこれを修正する方法を知っていますか?

更新:私はこれについてかなりの研究をしました、そして私は私の発見を分かち合うと思いました。問題はWordPress自体の中のcomment_form関数から来ています。

この問題を回避するには、2つの方法があります。

  1. 必須フィールドにはプレースホルダーのみを使用してください。フィールドにフォーカスが置かれて何かが入力されると、プレースホルダはクリアされます。
  2. フォームを送信する前に、JavaScriptを使用してプレースホルダをクリアしてください。

私はこれが同じ問題に遭遇した他の人たちに役立つことを願っています。現時点では、WordPressはXHTMLをサポートすることだけを意図しているので、私はWordPressにパッチを提出していません。

2
Elpie

この問題を回避するには、現在2つの選択肢しかありません。

  1. 必須フィールドにはプレースホルダーのみを使用してください。フィールドにフォーカスが置かれて何かが入力されると、プレースホルダはクリアされます。
  2. フォームを送信する前に、JavaScriptを使用してプレースホルダをクリアしてください。

注:多くの調査の結果、私自身の質問に答えました。

1
Elpie

私はこの問題も抱えています、プレースホルダー属性を削除するだけで、解決方法は見つかりませんでした:/どのブラウザでも発生しているようです。プレースホルダ属性をサポートしていないブラウザにはJavaScriptフォールバックを使用していますが、それがあってもなくても、ワードプレスは入力の値としてプレースホルダテキストを選択するようです。

1
user4586