我在这里有两个问题
我同时使用了javascript验证和ASP.NET验证器,但是.net验证器没有完全正常工作,它显示验证消息但是当我点击提交表单时会提交
另一个是,在javascript验证中,电子邮件验证无效,我在aspx文件中编写了电子邮件验证功能,并在cs文件中进行了javascript验证
在电子邮件验证中,当我使用getElementById时它什么也没显示,但是当我使用getElementByName时它显示验证消息,即使电子邮件是正确的,它也会显示验证消息,表单也会提交
aspx文件中的电子邮件验证功能 -
<script type="text/javascript">
function checkEmail() {
var email = document.getElementsByName('txtremail');
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(email.value))
{
alert('Please provide a valid email address');
email.focus;
return false;
}
else {
return true;
}
}
提交按钮 -
<asp:ImageButton ID="submitbtn" runat="server"
ImageUrl="~/images/joinnow.jpg" CssClass="joinbtn"
ValidationGroup="join" onclick="submitbtn_Click" OnClientClick="return checkEmail()"/>
并且在cs文件中我使用了if条件,因为即使电子邮件无效,我认为表单也会提交
cs文件代码是 -
public bool chkpass(string pass, string conpass)
{
if (pass.Equals(conpass))
{
return true;
}
return false;
}
protected void submitbtn_Click(object sender, ImageClickEventArgs e)
{
if (txtruname.Text != "" && txtrfname.Text != "" && txtrpass.Text != "" && txtremail.Text != "" && txtrdesc.Text != "")
{
if (!chkpass(txtrpass.Text, txtrcnpass.Text))
{
Page.ClientScript.RegisterStartupScript(GetType(), "", "alert('password does not match');", true);
}
else
{
dl.req_username = txtruname.Text;
DataTable dt = new DataTable();
dt = bl.reqruiter_uname(dl);
if (dt.Rows.Count > 0)
{
lblwarning.Text = "username exists";
}
else
{
dl.req_fullname = txtrfname.Text;
dl.req_username = txtruname.Text;
dl.req_password = txtrpass.Text;
dl.req_email = txtremail.Text;
dl.req_description = txtrdesc.Text;
bl.reqruiter_registration(dl);
}
}
}
else
{
Page.ClientScript.RegisterStartupScript(GetType(), "", "alert('please fill all info');", true);
}
那么,如果电子邮件出错,我应该怎样做才能使表单无法提交? 如果可能的话,我怎样才能在cs文件中编写电子邮件验证,因此它可以满足提交点击的条件,谢谢