---
title: "Kontrollera så att endast siffror har angetts"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/56656-kontrollera-så-att-endast-siffror-har-angetts"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "kristoffer"
published: "2002-10-21T09:22:19.000Z"
updated: "2002-10-22T07:59:58.000Z"
replies: 6
views: 316
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/56656-kontrollera-så-att-endast-siffror-har-angetts"
---

# Kontrollera så att endast siffror har angetts

## #1 — kristoffer, 2002-10-21T09:22Z

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

Permalänk: https://www.webforum.nu/p/56656

## #2 — Dino, 2002-10-21T09:48Z

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.

Permalänk: https://www.webforum.nu/p/829074

## #3 — P, 2002-10-21T15:32Z

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

Permalänk: https://www.webforum.nu/p/829339

## #4 — NETwork, 2002-10-22T05:00Z

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.

Permalänk: https://www.webforum.nu/p/829743

## #5 — kristoffer, 2002-10-22T06:44Z

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.

Permalänk: https://www.webforum.nu/p/829778

## #6 — icaaq, 2002-10-22T06:47Z

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

mvh,

Permalänk: https://www.webforum.nu/p/829780

## #7 — kristoffer, 2002-10-22T07:59Z

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.

Permalänk: https://www.webforum.nu/p/829823

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/56656-kontrollera-så-att-endast-siffror-har-angetts
