Gå til innhold

Anbefalte innlegg

Hei , lager en webshop i et skoleprosjekt vi har, og har da selvsagt en tekstboks der du kan velge hvor mange du vil bestille av f.eks en tskjorte.

Det jeg sliter med er å få til er at dersom en bruker skriver en bokstav istedet for et tall , så vil jeg ha opp en feilbeskjed , og ikke få en feil på selve siden.

Hvordan gjør jeg dette ?

Finner ikke dette med google , desverre.

Lenke til kommentar
Videoannonse
Annonse
  • 3 måneder senere...

Du kan også bruke Ajax control toolkit sin filtered textbox extender :)

 

EDIT:

 

Her er kode du kan bruke for å lage en popup med feilmelding til brukeren hvis valideringen feiler:

 

private void MessageBox(string message)
{
   this.RegisterStartupScript(this, this.GetType(), "err_msg", "alert('" + message + "');", true);
}

 

Francis

Endret av :Francis:
Lenke til kommentar

Selv bruker jeg en event og regex slik at det ikke er mulig å bruke annet enn tall og backspace/delete i tekstboksen, dersom brukeren prøver å skrive inn noe annet skjer det ingenting.

 

private void textBox_privatestoresell_quantity_KeyPress(object sender, KeyPressEventArgs e)
{
   if ((!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "\\d+"))&&(!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "\b" )))
       e.Handled = true;

}

Lenke til kommentar

Jeg laget en tekstboks for dette en gang.

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace orsaDB
{
   public class CheckedTextEditor : TextBox
   {
    protected Regex m_reg;
    protected string m_reg_exp;
    protected bool m_ignore_case;
    protected bool m_allow_invalid_text;

    [DefaultValue(false)]
    public bool IgnoreCase
    {
	    get
	    {
		    return m_ignore_case;
	    }
	    set
	    {
		    m_ignore_case = value;
		    RebuildRegex();
	    }
    }

    [DefaultValue(false)]
    public bool AllowInvalidText
    {
	    get
	    {
		    return m_allow_invalid_text;
	    }
	    set
	    {
		    m_allow_invalid_text = value;
	    }
    }
    [DefaultValue(true)]
    public bool IsTextValid
    {
	    get
	    {
		    if ( m_reg != null )
			    return ValidateText( Text );
		    else
			    return true;
	    }
    }

    protected void RebuildRegex()
    {
	    m_reg = new Regex(m_reg_exp, m_ignore_case ? RegexOptions.IgnoreCase : RegexOptions.None);
    }
    [DefaultValue("")]
    public string RegularExpression
    {
	    get
	    {
		    return m_reg_exp;	
	    }
	    set
	    {
		    m_reg_exp = value;
		    m_reg = new Regex( m_reg_exp );

		    RebuildRegex();
	    }
    }

    public CheckedTextEditor()
    {
	    m_reg_exp = "";
	    m_reg = null;
    }

    protected override void OnKeyPress( KeyPressEventArgs e )
    {
	    base.OnKeyPress( e );
	    if ( e.KeyChar != (char)8 && !m_allow_invalid_text)
	    {
		    string text = Text + e.KeyChar;

		    e.Handled = !ValidateText( text );
	    }
    }
    protected bool ValidateText( string text )
    {
	    Match m = m_reg.Match( text );
	    return (m.Index == 0) && (m.Length == text.Length);
    }

    protected override void OnTextChanged( EventArgs e )
    {
	    ForeColor = IsTextValid ? SystemColors.WindowText : Color.Red;
	    base.OnTextChanged( e );
    }
	/// <summary> 
	/// Required designer variable.
	/// </summary>
	private System.ComponentModel.IContainer components = null;

	/// <summary> 
	/// Clean up any resources being used.
	/// </summary>
	/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
	protected override void Dispose( bool disposing )
	{
		if ( disposing && ( components != null ) )
		{
			components.Dispose();
		}
		base.Dispose( disposing );
	}

	#region Component Designer generated code

	/// <summary> 
	/// Required method for Designer support - do not modify 
	/// the contents of this method with the code editor.
	/// </summary>
	private void InitializeComponent()
	{
		components = new System.ComponentModel.Container();
	}

	#endregion

   }
}

 

AllowInvalidText gjør sånn at man kan skrive en verdi som ikke matcher, men teksten blir farget rød.

Lenke til kommentar
  • 2 uker senere...

Hvis dette er prosjektet er skrevet i ASP.NET (noe jeg går ut i fra siden det er en webshop og postet her)...så finnes det en ferdig kontroll du kan bruke. Null vits å lage dine egne klasser, styre med events og greier for dette.

<asp:TextBox ID="TextBox1" runat="server" />
   <asp:RegularExpressionValidator ID="RegularExpressionValidator1" 
                                   runat="server" 
                                   ErrorMessage="Vennligst skriv inn et tall" 
                                   ControlToValidate="TextBox1" 
                                   ValidationExpression="[0-9]*" />

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...