2009-07-07 55 views
4

我有一個非常簡單的CFFORM與單一表單字段:如何驗證ColdFusion CFForm中的字符?

<cfform action="asdf.cfm" method="post"> 
    <cfinput name="fieldName" type="text" size="20" maxlength="20" required="yes" validate="regex" pattern="[A-Za-z]" message="Only characters are allowed." /> 
    <input type="submit" name="btnSubmit" value="check" /> 
</cfform> 

從理論上講,這將只允許A-Z和A-Z的任意組合,而且必須有它的一些內容。

實際上,我可以輸入'a'並且javascript驗證不會抱怨。由於「空間」角色不在A-Z而不在A-Z中,因此發生了什麼?

謝謝! 克里斯

回答

13

你缺少啓動的串和結束串錨:

^[A-Za-z]$ 

,或者更可能:

^[A-Za-z]{1,20}$ 

你的樣本,修改:

<cfform action="asdf.cfm" method="post"> 
    <cfinput name="fieldName" type="text" size="20" maxlength="20" required="yes" validate="regex" pattern="^[A-Za-z]{1,20}$" message="Only characters are allowed." /> 
    <input type="submit" name="btnSubmit" value="check" /> 
</cfform> 

沒有這些錨點,正則表達式只需要匹配任何地方,它不需要完全匹配

2

個人我會避免使用內置的coldfusion JavaScript。如果您推出自己的產品,您將擁有更多的控制權,並且可以讓您以其他方式顯示錯誤,而不僅僅是提醒框。

<script> 
function checkit() { 
    var v = document.getElementById("text1").value; 
    if(!v.match(/^[a-zA-Z]+$/)) { 
     alert(v + ' contains invalid characters'); 
     return false; 
    } 
    return true; 
} 
</script> 
<form onsubmit="return checkit()"> 
<input type="text" id="text1"> 
<input type="submit"> 
</form> 
+0

感謝您的選擇(和示例代碼)。現在,對於我們來說,警報框就足夠了。 – 2009-07-07 16:54:13

1
<script> 
function checkit() { 
    var v = document.getElementById("text1").value; 
    if(!v.match(/^[a-zA-Z\\ \\.\\]+$/)) { 
     alert(v + ' contains invalid characters'); 
     return false; 
    } 
    return true; 
} 
</script> 
<form onsubmit="return checkit()"> 
<input type="text" id="text1"> 
<input type="submit"> 
</form> 

這裏同時進入並點可能,但如何,我必須做的reconoce A Aö。

當然,非常感謝您的幫助,您的幫助如此之大。

1

當我在尋找我自己的解決方案時,遇到了這篇文章。需要一種非侵入性的方式來防止人們通過一個字段中的數字輸入任何內容,而只能使用其他字段中的字母,數字或空格輸入任何內容。我不能使用pattern =「9999」作爲數字,因爲它不是必填字段,如果用戶通過該字段進行選擇,人們就會「大聲叫嚷」。同樣,不能使用pattern =「xxx」作爲字母/數字字段,因爲我也需要允許空格。

從本文中跳過並使用以前的程序員爲該客戶端開發的JavaScript,我想出了這些漂亮的處理程序,以爲我會分享以防別人需要這個優雅的解決方案,因爲有時我會忘記能夠再次找到這個。

無論是在.js文件中您可以加入或包含在標籤:

function numChecker(e) 
    { 
     if (!e.value.match(/^[0-9]+$/)) 
     { 
     e.value = e.value.substring(0.e.value.length -1); 
     e.focus(); 
     return false; 
     } 
     return true; 
    } 
    function charChecker(e) 
    { 
     if (!e.value.match(/^[a-zA-Z0-9\ ]+$/)) 
     { 
     e.value = e.value.substring(0.e.value.length-1); 
     e.focus(); 
     return false; 
     } 
     return true; 
    } 

那麼你的輸入或cfinput領域將在他們的屬性OnKeyUp="numChecker(this)"OnKeyUp="charChecker(this)"

隨着人們的輸入,如果他們輸入了無效的字符,這個腳本將會啓動並簡單地刪除那個不好的字符。沒有額外的按鈕點擊或警報解僱。