我試圖驗證一個主題的字段,我將在發送郵件時使用郵件()發送郵件並使用它。JS正則表達式被跳過?
到目前爲止,我已經完成了正則表達式,編輯了一個現有的Javascript片段,並使用前實習生的字段驗證功能,在我的HTML輸入字段中添加了一個模式,並編寫了一個小型的服務器端PHP/regex驗證下一頁。它看起來在第一眼看起來很好,但是當我刪除我的inputfield中的模式(通過Chrome使用inspect元素完成)時,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明顯錯了嗎?另一方面,它在我網站上的其他表格上工作,所以我認爲我會堅持以同樣的方式驗證字段。
我看着你的答案,得出的結論是,它確實在IE中工作。我知道Javascript可以被禁用,並且可以通過編輯客戶端手動刪除該模式,這樣當服務器端檢查啓動時。您認爲如果忽略JS +模式會有什麼壞處? – 2013-04-11 09:59:05
檢查的所有情況下(我假設)。所以,對於任何普通用戶來說,這裏沒有問題。對於只想惹你的應用的人來說,有服務器端檢查。 JS檢查(和HTML在這裏)僅僅是對用戶的禮貌。 – Loamhoof 2013-04-11 10:00:52
好吧,夠公平的。至少現在我知道我需要查看其他頁面上的服務器端檢查。我會接受你的回答:) – 2013-04-11 10:02:03