问题是这样的:
BOSS设计了一个自定义控件,由1个textbox组成。然后我加了一个RequiredFieldValidator。用来让textbox不为空。
如何让RequiredFieldValidator在客户端对textbox进行验证?而不是在服务端验证。
换句话说就是当textbox为空时,前台在回发前直接就挡住。
BOSS设计了一个自定义控件,由1个textbox组成。然后我加了一个RequiredFieldValidator。用来让textbox不为空。
如何让RequiredFieldValidator在客户端对textbox进行验证?而不是在服务端验证。
换句话说就是当textbox为空时,前台在回发前直接就挡住。
JS做这个很简单的,
添加提交表单form的属性onsubmit = "return submintClick();"
在JS方法submintClick()里面判断是否为空,如果为空返回false,
就不会提交
本人小白。代码能开懂,但不知道如何用,在哪里用。
JS代码应该写在哪里?ASPX?写在什么位置。。
本身就是客户端验证!!
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl2.ascx.cs" Inherits="UserControl_WebUserControl2" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="不能为空!!" SetFocusOnError="True">*</asp:RequiredFieldValidator>页面代码:
<form id="form1" runat="server">
<uc1:WebUserControl2 ID="WebUserControl21" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>就OK了!!
{
get { return Convert.ToInt32(tbcnt.Text.Trim()); }
set { tbcnt.Text = value.ToString();
}这是自定义控件TEXTBOX的属性,如果什么都不输入,提交后它会先报错(因为为空,转换出错),而不是先执行RequiredFieldValidator的验证。
<form action="xxxx" method="post" name="yyyy" onsubmit="return checkText();">下面的脚本放在页面随便那个地方:
<script type="text/javascript">
function checkText(){
var obj = document.getElementById("textbox111");
if(obj.value == "" || obj.value == null){
return false
}
}
</script>
public string cnt
{
get
{
return tbcnt.Text.Trim();
}
set
{
tbcnt.Text = value.ToString();
}
}
因为你用的服务器控件(也就是asp控件),
不是html标签,
所以,真正生成的页面中的id要看清楚,
js只认页面生成的textbox的id.
放在哪里??
是不是这个东西就类似于弹出一个消息框??
koukoujiayi 能不能帮我把FORM写全....
这就是放在页面的<form.....>中,
作用按提交按钮去执行js的checkText()函数!!
页面代码
<form id="Form1" action="Default.aspx" method="post" name="yyyy" onsubmit="return checkText();">
<input id="Button1" type="submit" value="提交" /></div>
</form>按提交按钮,首先会去执行js的checkText()涵数,然后执行action后的代码,打开一个网页Default.aspx这不是asp.net的方式,是过去asp的方式!!
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl2.ascx.cs" Inherits="UserControl_WebUserControl2" %>
<asp:TextBox ID="tbcnt" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="tbcnt" ErrorMessage="不能为空!!" SetFocusOnError="True"
Display="Dynamic">*</asp:RequiredFieldValidator>用户控件c#代码:
public partial class UserControl_WebUserControl2 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{ }
public string cnt
{
get
{
return tbcnt.Text.Trim();
}
set
{
tbcnt.Text = value.ToString();
}
}
}调用用户控件页面代码:
<form id="form1" runat="server">
<uc1:WebUserControl2 ID="WebUserControl21" runat="server" />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</form>调用用户控件c#代码:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(WebUserControl21.cnt.ToString());
}楼主可新建用户控件和页面,通过后再加入你的项目!!
RequiredFieldValidator控件,服务器控件,生成JavaScript先在客户端验证,如果客户端禁用JavaScript,将会在服务器端验证。《C#与.NET3.5高级程序设计(第四版)》里这么提过
但是RequiredFieldValidator存在一个问题,就是不能判断是否非空如果楼主仅仅是要做非空校验,用RequiredFieldValidator控件如果既要验证格式,又要验证非空,就得两个控件都用,这样做就不如自己用js代码来实现了,也麻烦不了多少
ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
<table>
<tr>
<td style="width: 2px; height: 40px;">
<asp:Label ID="Label3" runat="server" Text="券别/版别" Width="189px"></asp:Label></td>
<td style="width: 67px; height: 40px;">
<asp:DropDownList ID="DropDownListRMBtype" runat="server" AutoPostBack="True" Width="154px" OnSelectedIndexChanged="DropDownListRMBtype_SelectedIndexChanged">
</asp:DropDownList></td>
<td style="height: 40px; width: 49063px;">
<asp:DropDownList ID="DropDownListVertype" runat="server"
Width="100px">
</asp:DropDownList></td>
<td style="height: 40px">
<asp:Literal ID="LiteralDenomination" runat="server" Visible="False"></asp:Literal></td>
</tr>
<tr><td style="height: 21px; width: 2px;">
<asp:Label ID="Label1" runat="server" Text="张数" Width="189px"></asp:Label></td><td style="width: 67px; height: 21px;">
<asp:TextBox ID="tbcnt" runat="server" OnTextChanged="tbcnt_TextChanged" AutoPostBack="true">
</asp:TextBox></td>
<td style="width: 49063px; height: 21px">
<asp:RequiredFieldValidator ID="RFVcnt" runat="server" ControlToValidate="tbcnt" ErrorMessage="*假币张数" Width="101px" SetFocusOnError="True" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="REVcnt" runat="server" ControlToValidate="tbcnt" ErrorMessage="*输入数字" ValidationExpression="\d+" Width="90px" SetFocusOnError="True"></asp:RegularExpressionValidator></td>
</tr>
<tr><td style="width: 2px">
<asp:Label ID="Label2" runat="server" Text="面额(单位:元)" Width="187px"></asp:Label></td><td style="width: 67px">
<asp:TextBox ID="tbamt" runat="server" ReadOnly="True"></asp:TextBox></td>
<td style="width: 49063px">
</td>
</tr>
</table>
{
get { return Convert.ToInt32(tbcnt.Text.Trim()); }
set { tbcnt.Text = value.ToString();
}这是自定义控件TEXTBOX的属性,如果什么都不输入,提交后它会先报错(因为为空,转换出错),而不是先执行RequiredFieldValidator的验证。
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="不能为空!!" SetFocusOnError="True">*</asp:RequiredFieldValidator>