webForumDet fria alternativet

Kontrollera så att endast siffror har angetts

.NET

6 svar · 303 visningar · startad av kristoffer

Medlem sedan juni 20001 257 inlägg
Frågan#1

Om jag skall kontrollera en TextBox så att endast siffror har fyllts i, då är det en CustomValidator Control som gäller va?

Medlem sedan sep. 20011 914 inlägg
#2

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.

Medlem sedan jan. 20012 204 inlägg
#3

hmm jag får upp ett felmeddelande om att man måste ha nån js fil...?!?

Medlem sedan juni 20011 732 inlägg
#4

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.

Medlem sedan juni 20001 257 inlägg
#5

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.

Medlem sedan okt. 20005 273 inlägg
#6

Är det nått du vill dela med dig :)

mvh,

Medlem sedan juni 20001 257 inlägg
#7

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.

250 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)