hola,
Se me presento el siguiente problema.
Resulta que intento hacer uso de jQuery, pero se em complico con los controles
de validaciones de asp.net.
A ver le comento en la pagina tengo varios textbox con sus respectivos
RequiredFieldValidator y RegularExpressionValidator.
Algo asi:
<asp:TextBox ID="txtCode" Name="txtCode" runat="server" MaxLength="10" />
<asp:RequiredFieldValidator ID="reqCode" runat="server"
ControlToValidate="txtCode" SetFocusOnError="true"
ErrorMessage="<%$Resources:MainResources,ERR_CODE%>" Display="Dynamic" />
<asp:RegularExpressionValidator ID="regCode" runat="server"
ControlToValidate="txtCode"
Display="Dynamic" ErrorMessage="<%$Resources:MainResources,ERR_CODEFORMAT%>"
SetFocusOnError="True"
ValidationExpression="[^<>'%*]+" ></asp:RegularExpressionValidator>
<asp:Button ID="btnSave" runat="server" OnClientClick="javascript: saveGroup();
return false;" Text="Guardar" />
Nota: esto por supuesto no esta asi tirado, en la pagina esta en tablas bien
ubicado, lo posteo asi para que sea mas legible.
Alli solo puse el textbox Code, pero existe otro para el nombre o la
descripcion.
El javascript seria el siguiente:
function saveGroup() {
var code = $("#<%=txtCode.ClientID%>").getValue();
var description = $("#<%=txtName.ClientID%>").getValue();
$.ajax({
type: "POST",
url: "GroupsCalls.aspx/SaveGroup",
data: "{'code':'" + code + "','description':'" + description + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
alert(result.d);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus + ": " + XMLHttpRequest.responseText);
}
})
Como observaran, si presiono el boton "Guardar" este ejecuta el javascript, sin
tener en cuanta las validaciones de asp.net.
Ya que el atributo OnClientClick anula las validaciones de asp.net.
La pregunta es, como puede hacer para ejecutar las validaciones de los
controles asp.net antes de llamar a la funcion javascript "saveGroup" ?
Y por supuesto si alguna falla evitar esta llamada.
Seria como ejecutar la validacion pero en lugar de evitar el submit del
formaulario, seria evitar la llamada a la funcion javascript "saveGroup".
Buscando pude ver que existe en jQuery un metodo de nombre: ValidatorEnable().
Pero esta solo sive para desplegar el texto de la validacion y no para
ejecutarla.
How to manage ASP.NET validation from Javascript with jQuery
http://codeclimber.net.nz/archive/2008/05/14/How-to-manage-ASP.NET-validation-from-Javascript-with-jQuery.aspx
O sea en este caso podria hacer:
function saveGroup() {
var code = $("#<%=txtCode.ClientID%>").getValue();
var description = $("#<%=txtName.ClientID%>").getValue();
if (code == "")
{
ValidatorEnable($("#<%= reqCode.ClientID %>")[0], true);
return;
}
else
ValidatorEnable($("#<%= reqCode.ClientID %>")[0], false);
if (description == "")
{
ValidatorEnable($("#<%= reqName.ClientID %>")[0], true);
return;
}
else
ValidatorEnable($("#<%= reqName.ClientID %>")[0], false);
$.ajax({
type: "POST",
url: "GroupsCalls.aspx/SaveGroup",
data: "{'code':'" + code + "','description':'" + description + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
alert(result.d);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus + ": " + XMLHttpRequest.responseText);
}
})
Como veran agrego manualmente la validacion y con ValidatorEnable(), se muestra
el mensaje del control de RequiredFieldValidator.
La consulta es como valido el RegularExpressionValidator, este es mas complejo.
Es una macana que el ValidatorEnable() de jQuery no evalue la expresion y
devuelva si se paso correctamente o no.
Bueno espero se entienda el problema, sino puedeo aportar mas info.
Saludos
Yahoo! Cocina
Recetas prácticas y comida saludable
http://ar.mujer.yahoo.com/cocina/