我正在尝试验证一个主题的字段,稍后我将在使用 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 是完全错误的吗?另一方面,它适用于我网站上的其他表单,所以我想我会以同样的方式坚持验证字段。