如何在关联的文本框中显示必填字段验证器错误消息?

时间:2012-03-29 12:43:50

标签: asp.net

我在该文本框上有一个文本框,我正在使用必填字段验证。 如果文本框为空,那么我想在文本框中显示“请输入一些文本”,如果文本框中有东西,那么我想检查文本框文本是否是有效的电子邮件ID,如果没有,那么我想显示在文本框内“请输入有效的电子邮件ID”

5 个答案:

答案 0 :(得分:2)

您可以使用jQuery执行以下操作:

<script type="text/javascript">

function CheckEmail()
{
    var $email = $("#<%=EmailText.ClientID %>");

    if ($email.val().length) {
        if (!IsEmailValid($email.val()))
            $email.val("Please enter a valid email address");
    }
    else {
        $email.val("Please enter some text.");
    }
}    

function IsEmailValid(inputvalue) 
{
    var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;

    if(pattern.test(inputvalue)) {
        return true;
    } 
    else {
        return false;
    }
}

</script>

<asp:TextBox ID="EmailText" Text="Please enter some text" runat="server" />
<asp:Button ID="SubmitButton" runat="server" OnClientClick="CheckEmail()" />

或者您可以使用RequiredFieldValidator和RegularExpressionValidator进行.NET验证。

修改

由于海报声明客户端脚本不能用于验证,我已经添加了服务器端验证:

protected void SubmitButton_Click(object sender, EventArgs e)
{
        if (IsFormValid())
        {
        //Do something...
    }

}

private bool IsFormValid()
{
    bool isValid = true;

    if (String.IsNullOrEmpty(EmailText.Text))
    {
        EmailText.Text = "Please enter an email address";
        isValid = false;
    }
    else
    {
        if (!Regex.IsMatch(EmailAddress.Text, @"/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/"))
        {   
            EmailText.Text = "Email address not valid";
            isValid = false;    
        }

    }

    return isValid;
}

答案 1 :(得分:0)

您可以使用占位符

<input type="text" placeholder="Please enter some text">

我相信你确实需要一个jQuery插件才能在Internet Explorer中工作。

但我不明白为什么它应该改为'请输入有效的电子邮件ID'

您可以在开始时说“请输入有效的电子邮件ID”并添加验证器脚本,以便人们无法输入无效的电子邮件。

function validateForm()

{
var x=document.forms["MyForm"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
  alert("Not a valid email id");
  return false;
  }
}

答案 2 :(得分:0)

您可以使用reqiredfieldvalidator来检查文本框是否为空

<asp:RequiredFieldValidator ID="RequiredFieldValidator" runat="server" ControlToValidate="yourTextBox" Text="This field is required" />

并检查电子邮件验证,您可以使用RegularExpressionValidator验证电子邮件的输入

<asp:RegularExpressionValidator runat="server" ID="emailValidator" ControlToValidate="emailTextBox" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" Text="please enter a valid email address" />

答案 3 :(得分:0)

请使用此示例:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1" runat="server" ErrorMessage="Please enter some text"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="TextBox1"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
    runat="server" ErrorMessage="Please enter valid emailid"></asp:RegularExpressionValidator>

RequiredFieldValidator验证空文本框,然后RegularExpressionValidator与ValidationExpression匹配,在这种情况下它是emailid。

答案 4 :(得分:0)

对于空文本验证,请使用RequiredFieldValidator默认功能:

<asp:RequiredFieldValidator runat="server" ID="requiredValidatorId" ControlToValidate="textBoxId" ErrorMessage="Please enter some text" />

对于输入格式或域验证,请使用如下服务器端逻辑:

if (!IsValidEmail(email))
{
    zoneRequiredValidatorId.Text = "Please enter valid email id";
    zoneRequiredValidatorId.IsValid = false;
}
else
if (...)
{
    zoneRequiredValidatorId.Text = "Validation error X";
    zoneRequiredValidatorId.IsValid = false;
}
...

请注意,我们在此处将IsValid属性设置为false。