Tengo una configuración de validación requerida en un cuadro de texto, pero también debo asegurarme de que sea un número entero.validación de asp.net para asegurarse de que el cuadro de texto tenga valores enteros
¿Cómo puedo hacer esto?
Tengo una configuración de validación requerida en un cuadro de texto, pero también debo asegurarme de que sea un número entero.validación de asp.net para asegurarse de que el cuadro de texto tenga valores enteros
¿Cómo puedo hacer esto?
Si todo lo que usted está preocupado por es que el campo contiene un número entero (es decir, no se refiere a una serie), a continuación, añadir una CompareValidator
con su Operator
propiedad establecida en DataTypeCheck
:
<asp:CompareValidator runat="server" Operator="DataTypeCheck" Type="Integer"
ControlToValidate="ValueTextBox" ErrorMessage="Value must be a whole number" />
Si hay un rango específico de valores que son válidos (que probablemente son), entonces usted puede utilizar un RangeValidator
, así:
<asp:RangeValidator runat="server" Type="Integer"
MinimumValue="0" MaximumValue="400" ControlToValidate="ValueTextBox"
ErrorMessage="Value must be a whole number between 0 and 400" />
Estos sólo validará si hay texto en el cuadro de texto, por lo que wil Necesito mantener el RequiredFieldValidator
allí también.
Como dijo @Mahin, asegúrese de marcar la propiedad Page.IsValid
en el lado del servidor, de lo contrario, el validador solo funciona para usuarios con JavaScript habilitado.
Uso Int32.TryParse.
int integer;
Int32.TryParse(Textbox.Text, out integer)
devolverá un bool para que pueda ver si entraban en un entero válido.
Adjuntar un validador de expresión regular para el cuadro de texto y crea su expresión sea esta:
^\d+$
y hacer su validación del lado del servidor también, por supuesto.
Hay varias maneras diferentes de manejar esto. Puede agregar un Valor de campo requerido, así como un RangeValidator (si eso funciona para su caso) o puede agregar un CustomFieldValidator.
Enlace a la CustomFieldValidator: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator%28VS.71%29.aspx
Enlace al artículo de MSDN de ASP.NET Validación: http://msdn.microsoft.com/en-us/library/aa479045.aspx
http://msdn.microsoft.com/en-us/library/ad548tzy%28VS.71%29.aspx
Al utilizar los controles de servidor de validación tiene que tener cuidado de que cualquier uno puede deshabilitar javascript en su navegador. Por lo tanto, debe usar Page.IsValid Propiedad siempre en el lado del servidor.
<script language="javascript" type="text/javascript">
function fixedlength(textboxID, keyEvent, maxlength) {
//validation for digits upto 'maxlength' defined by caller function
if (textboxID.value.length > maxlength) {
textboxID.value = textboxID.value.substr(0, maxlength);
}
else if (textboxID.value.length < maxlength || textboxID.value.length == maxlength) {
textboxID.value = textboxID.value.replace(/[^\d]+/g, '');
return true;
}
else
return false;
}
</script>
<asp:TextBox ID="txtNextVisit" runat="server" MaxLength="2" onblur="return fixedlength(this, event, 2);" onkeypress="return fixedlength(this, event, 2);" onkeyup="return fixedlength(this, event, 2);"></asp:TextBox>
esta función javascript aceptará solo 2 enteros, también el usuario no puede escribir otro tipo entero. si desea más de 2 valores enteros, simplemente use
Puedes editar tu respuesta para agregar más detalles (es mejor leerla que un comentario) – kleopatra
Esto funciona bien para mí:
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="YourTextBoxID"
ErrorMessage="Only numeric allowed." ForeColor="Red"
ValidationExpression="^[0-9]*$" ValidationGroup="NumericValidate">*
</asp:RegularExpressionValidator>
creo que se debe añadir a su ValidationGroup="NumericValidate"
botón de enviar también.
Puede usar java script para esto: -
<asp:TextBox ID="textbox1" runat="server" Width="150px" MaxLength="8" onkeypress="if(event.keyCode<48 || event.keyCode>57)event.returnValue=false;"></asp:TextBox>
Visual Studio tiene soporte integrado ahora conseguido para la comprobación de rango y tipo de cheques: -
Prueba esto: - Para la comprobación de rango Antes de validar/verificar un rango particular de números Cambie a la vista de diseño desde la vista de marcado. Luego: -
Ver> Herramientas> Validación
Ahora arrastre en RangeValidator a su página de diseño en la que desea mostrar el mensaje de error (por supuesto, si el usuario está introduciendo valores fuera de límites) ahora haga clic en el mando a RangeValidator. Haga clic derecho y seleccione propiedades. En la ventana Propiedades (generalmente se abre debajo de la barra de solución), seleccione MENSAJE DE ERROR. Escriba: -
El número debe estar dentro del rango.
Ahora seleccione Control para validar y seleccionar su TextboxID (o escríbalo de todos modos) desde el menú desplegable. Ubique Escriba en la barra de propiedades y seleccione abajo Entero.
Justo encima encontrará el valor máximo y mínimo. Ingrese su número deseado.
Para verificación de tipos (sin ningún tipo de Rango)
Antes de validar/comprobación de un rango particular de números Conectar a la vista de diseño de la vista de marcado .A continuación: -
Ver> Herramientas> Validación
Ahora Arrastre en CompareValidator a su página de diseño donde desea mostrar el mensaje de error (por supuesto, si el usuario está ingresando texto). ahora haga clic en su control CompareValidator. Haga clic derecho y seleccione propiedades. En la ventana Propiedades (generalmente se abre debajo de la barra de solución), seleccione MENSAJE DE ERROR. Escriba: -
El valor debe ser un número.
opción ControlToValidate Ahora localizar y escribir su nombre en él ID del control (de forma alternativa también se puede seleccionar entre desplegables) .Locate la opción del operador y escribir DataTypeCheck (alternativamente también se puede seleccionar entre desplegables) en ella .Again localizar la opción Tipo y escriba Entero en ella.
Eso es sentarse.
Alternativamente se puede escribir el siguiente código en su página aspx: - <% - para validar sin ningún rango -%>
doble clic en el botón y utilice el código siguiente: -
protected void button_click(object sender,EventArgs e)
{
int parsedValue;
if(int.TryParse(!txt.Text,out parsedValue))
{
Label.Text = "Please specify a number only !!"; //Will put a text in a label so make
//sure
//you have a label
}
else
{
// do what you want to
}
Posible problema con CompareValidator que comprueba un tipo de datos de Entero: Parece que solo comprueba los dígitos correctos (0-9), pero no comprueba el rango. Por lo tanto, si utiliza este validador, podría obtener excepciones fuera de rango si el valor ingresado por el usuario es demasiado grande o demasiado pequeño. Mejor agrega un validador de rango también! –