如何創建一個自定義的控制?我編輯了我的答案,包括jQuery以及服務器端驗證。我不知道你使用的是什麼正則表達式,所以我只用了一個簡單的字母測試。
的JavaScript(包括jQuery的文件):
<script language="javascript" type="text/javascript">
function validateText(source, args) {
var allTextFieldsValid = true;
$(".noNumbers").each(function() {
if (!/^[a-zA-Z]*$/.test(this.value)) {
allTextFieldsValid = false;
}
});
args.IsValid = allTextFieldsValid;
}
</script>
.aspx頁面中:
// set a specific css class on the textboxes you want to check so that jQuery can
// find them easily
<asp:TextBox ID="TextBox1" runat="server" CssClass="noNumbers"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" CssClass="noNumbers"></asp:TextBox>
<asp:Button ID="SubmitButton" runat="server" Text="submit" OnClick="Submit_Click" />
<asp:CustomValidator ID="MyValidator" runat="server"
OnServerValidate="Text_Validate" Text="Oops, sorry, no numbers!"
ClientValidationFunction="validateText"></asp:CustomValidator>
後面的代碼:
protected void Submit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
// do stuff
}
else
{
// do other stuff
}
}
protected void Text_Validate(object source, ServerValidateEventArgs args)
{
args.IsValid = true;
// I've done each textbox by id, but depending on how many you might want to loop through the controls instead
if (!IsTextValid(TextBox1.Text))
{
args.IsValid = false;
}
if (!IsTextValid(TextBox2.Text))
{
args.IsValid = false;
}
}
private bool IsTextValid(string myTextValue)
{
string myRegexString = @"^[a-zA-Z]*$";
return Regex.IsMatch(myTextValue, myRegexString);
}
希望這有助於!
如果您要這樣做,您會意識到需要調用服務器。 RegularExpressionValidator控件的好處是它是一個客戶端驗證方法,這意味着要驗證,它不會調用服務器,所以放置多個REV就是我的建議。同時,我還建議進行服務器端驗證,因爲有辦法繞過客戶端驗證。 – seekerOfKnowledge 2011-04-27 18:06:41
+1如果您不使用'RegularExpressionValidator',那麼下面的代碼示例都需要在JavaScript中爲客戶端完成或在服務器上運行。 – jp2code 2011-04-27 18:11:15
我已經更新了我的答案,除了服務器端驗證之外,還包含了jquery。 – annelie 2011-05-04 18:47:46