Frågan 21 okt. 2002 09:22 #1 Om jag skall kontrollera en TextBox så att endast siffror har fyllts i, då är det en CustomValidator Control som gäller va?
D Dino Medlem sedan sep. 2001 1 914 inlägg Skulle göra RegularExpressionValidator:
<asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ErrorMessage="Bara siffror tack." ValidationExpression="[\s(0-9)]*" ControlToValidate="TextBox1"></asp:RegularExpressionValidator>
ta bort \s om du inte vill att den skall acceptera mellanrum.
P P Medlem sedan jan. 2001 2 204 inlägg hmm jag får upp ett felmeddelande om att man måste ha nån js fil...?!?
NETwork Medlem sedan juni 2001 1 732 inlägg Du behöver filen WebUIValidation.js (den medföljer när du installerar ramverket). Det är det script som sköter valideringen på klienten och som automatiskt används av asp.net . Sök rätt på filen och lägg den i den katalog som sökvägen i felmeddelandet visar.
Jag gjorde en egen klass som ärver System.Web.UI.WebControls.TextBox. Med hjälp av den kontrollerar jag varje nedtryckt tangent och om den inte är en siffra skrivs inget i textboxen.
I icaaq Medlem sedan okt. 2000 5 273 inlägg Är det nått du vill dela med dig :)
mvh,
Gärna.
NumberBox.cs:
using System;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace foo.Controls
{
/// <summary>
/// A TextBox that only accepts numbers and comma.
/// </summary>
public class NumberBox : TextBox
{
private StringBuilder sb;
private string IEClientScriptBlock, NetscapeClientScriptBlock;
public NumberBox()
{
sb = new StringBuilder();
sb.Append("<script language=\"javascript\">\n");
sb.Append("<!--\n");
sb.Append("var keys = new Array (8, 9, 13, 33, 34, 35, ");
sb.Append("36, 37, 39, 45, 46, 188);\n");
sb.Append("function isKeyValid (keyCode)\n");
sb.Append("{\n");
sb.Append(" return ((keyCode >= 48 && keyCode <= 57) || ");
sb.Append("isAuxKey (keyCode));\n");
sb.Append("}\n");
sb.Append("function isAuxKey (keyCode)\n");
sb.Append("{\n");
sb.Append(" for (i=0; i<keys.length; i++)\n");
sb.Append(" if (keyCode == keys[i])\n");
sb.Append(" return true;\n");
sb.Append(" return false;\n");
sb.Append("}\n");
sb.Append("-->\n");
sb.Append("</script>");
IEClientScriptBlock = sb.ToString();
sb.Remove(0, sb.Length);
sb.Append("<script language=\"javascript\">\n");
sb.Append("<!--\n");
sb.Append("function isKeyValid (keyCode)\n");
sb.Append("{\n");
sb.Append(" return ((keyCode >= 48 && keyCode <= 57) || ");
sb.Append("keyCode == 8 || keyCode == 13);\n");
sb.Append("}\n");
sb.Append("-->\n");
sb.Append("</script>");
NetscapeClientScriptBlock = sb.ToString();
}
public override string Text
{
get { return base.Text; }
set
{
// Make sure value is numeric before storing it
Single.Parse(value);
base.Text = value;
}
}
protected override void OnPreRender (EventArgs e)
{
string browser = Context.Request.Browser.Type.ToUpper ();
int version = Context.Request.Browser.MajorVersion;
if (browser.IndexOf ("IE") > -1 && version >= 4)
Page.RegisterClientScriptBlock ("NumTextBoxScript", IEClientScriptBlock);
else if (browser.IndexOf ("NETSCAPE") > -1 && version >= 4)
Page.RegisterClientScriptBlock ("NumTextBoxScript", NetscapeClientScriptBlock);
}
protected override void Render (HtmlTextWriter writer)
{
string browser = Context.Request.Browser.Type.ToUpper ();
int version = Context.Request.Browser.MajorVersion;
if (browser.IndexOf ("IE") > -1 && version >= 4)
writer.AddAttribute ("onkeydown", "javascript:return isKeyValid (window.event.keyCode)");
else if (browser.IndexOf ("NETSCAPE") > -1 && version >= 4)
writer.AddAttribute ("onkeydown", "javascript:return isKeyValid (event.which)");
base.Render(writer);
}
}
}
Ursprungligen av http://wintellect.com/resources/faqs/default.aspx?faq_id=1 sidan 6 mitten av sidan.