件名のフィールドを検証しようとしています。これは後で POST し、mail() でメールを送信するときに使用します。
これまでのところ、正規表現を完成させ、元インターンのフィールド検証を使用して既存の Javascript を編集し、HTML 入力フィールドにパターンを追加し、次のページに小さなサーバー側の PHP/正規表現検証を記述しました。一見すると問題なく動作するように見えますが、入力フィールドのパターンを削除すると (Chrome で要素を検査して)、Javascript チェックが完全にスキップされ、フォームが投稿されます。サーバー側のチェックが原因で、前のページに戻りました。
私が使用するコードの一部を次に示します。
Javascript
<script type="text/javascript">
if($.browser.msie || navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1)
{
jQuery(function(){
$("#submit").click(function(){
$(".error").hide();
var hasError = false;
var onderwerpReg = /^[a-zA-Z0-9_]{4,20}[^\/'"<>;]*$/;
var onderwerpVal = $("#subject").val();
if (onderwerpVal == '')
{
$("#subject").html('<br/><span class="error">Vul een onderwerp in.</span>');
var hasError = true;
}
else if (!onderwerpReg.test(onderwerpVal))
{
$("#subject").html('<br/><span class="error">Onderwerp bevat gefilterde karakters.</span>');
var hasError = true;
}
if (hasError == true)
return false;
});
});
}
</script>
HTML
<input type="text" id="subject" name="subject" size="30" placeholder="Onderwerp" required aria-required="true" pattern="^[a-zA-Z0-9_]{4,20}[^\/'"<>;]*$"/>
私の質問は、Javascript の一部がスキップされる可能性があるのはなぜですか? 正しく読み込まれていませんか?Javascriptプレーンは間違っていますか? 反対に、私のウェブサイトの他のフォームでも機能するので、同じ方法で検証フィールドに固執すると思いました.