entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Como validar dos campos con Jquery para saber si existe id?

Hola, me gustaria saber si puedo hacer una validacion para dos campos y con un mismo evento me accione la orden: tengo este codigo, me trabaja bien con un campo, es cuando el id de la tabla esta ya, muestra un mensaje de lo contrario deja guardar, lo que tengo es esto

  $("#DigitoDeVerificacion").keyup(function (e) {
        var consulta = $("#CodigoPersona").val();
        $("#com").delay(100).queue(function(n){
            $("#com").html('<img src="/Images/ajax-loader.gif">');
            $.ajax({
                type: "POST",
                url: "@Url.Action("existe", "Persona")",
                data: "id="+consulta,
            dataType: "html",
            error: function(){
                alert("error petición ajax");
            },
            success: function (data) {
                console.log(typeof (data), data);
                if (data=="true") {
                    $("#com").html("Ya existe una persona con este código.");
                    $('.guardar').attr("disabled", true);
                } else {
                    $("#com").html("");
                    $('.guardar').attr("disabled", false);
                }
                n();
            }
        });
    });
    });

y lo que me gustaria hacer es esto, pero no funciona. ya que los dos campo sobre hago el keyup no funciona, Como hacer para que me tome los dos campos?

 $("#DigitoDeVerificacion","#NumeroIdentificacion").keyup(function (e) {
        var consulta = $("#CodigoPersona").val();
        $("#com").delay(100).queue(function(n){
            $("#com").html('<img src="/Images/ajax-loader.gif">');
            $.ajax({
                type: "POST",
                url: "@Url.Action("existe", "Persona")",
                data: "id="+consulta,
            dataType: "html",
            error: function(){
                alert("error petición ajax");
            },
            success: function (data) {
                console.log(typeof (data), data);
                if (data=="true") {
                    $("#com").html("Ya existe una persona con este código.");
                    $('.guardar').attr("disabled", true);
                } else {
                    $("#com").html("");
                    $('.guardar').attr("disabled", false);
                }
                n();
            }
        });
    });
    });

aqui el controlador

  [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string existe(string id)
        {
            db.Configuration.ProxyCreationEnabled = false;
            var rows = (from p in db.GN_Persona

                        where p.CodigoPersona.Equals(id)
                        select p).ToArray().Count();
            if (rows > 0)
            {
                var res = true;
                JavaScriptSerializer js = new JavaScriptSerializer();
                string org2 = js.Serialize(res);
                return org2;
            }
            else
            {
                var res = false;
                JavaScriptSerializer js = new JavaScriptSerializer();
                string org2 = js.Serialize(res);
                return org2;
            }
        }

la vista

 <div class="editor-label">
                    @Html.LabelFor(model => model.NumeroIdentificacion)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.NumeroIdentificacion)
                    @Html.ValidationMessageFor(model => model.NumeroIdentificacion, "", new { @class = "validate" })
                </div>
            </div>
        </div>
        <div class="separadores">
            <div class="flota">
                <div class="editor-label">
                    @Html.LabelFor(model => model.DigitoDeVerificacion)
                </div>
                <div class="editor-field">
                    <p class="space"></p>
                    @Html.EditorFor(model => model.DigitoDeVerificacion)
                    @Html.ValidationMessageFor(model => model.DigitoDeVerificacion)
                </div>
                <div class="editor-label">
                    @Html.LabelFor(model => model.CodigoPersona)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.CodigoPersona)
                    @Html.ValidationMessageFor(model => model.CodigoPersona, "", new { @class = "validate" })
                    <div id="com"></div>
                </div>
            </div>
        </div>

2 Respuestas

0voto

wroque Puntos4630

haz probado esto:

 $("#DigitoDeVerificacion, #NumeroIdentificacion").keyup(function (e) ...

de lo contrario haces esto

function keyupMyEdit(e) {
        var consulta = $("#CodigoPersona").val();
        $("#com").delay(100).queue(function(n){
            $("#com").html('<img src="/Images/ajax-loader.gif">');
            $.ajax({
                type: "POST",
                url: "@Url.Action("existe", "Persona")",
                data: "id="+consulta,
            dataType: "html",
            error: function(){
                alert("error petición ajax");
            },
            success: function (data) {
                console.log(typeof (data), data);
                if (data=="true") {
                    $("#com").html("Ya existe una persona con este código.");
                    $('.guardar').attr("disabled", true);
                } else {
                    $("#com").html("");
                    $('.guardar').attr("disabled", false);
                }
                n();
            }
        });
}

$("#NumeroIdentificacion").keyup(keyupMyEdit(e));
$("#DigitoDeVerificacion").keyup(keyupMyEdit(e));    

Saludos.

0voto

white Puntos75880

Bien puedes usar un mismo callback para los dos o hacer lo que intentas,

La sintaxis en esta linea es incorrecta:

 $("#DigitoDeVerificacion","#NumeroIdentificacion").keyup(function (e) {

Deberia estar de esta forma:

$("#DigitoDeVerificacion, #NumeroIdentificacion").keyup(function (e) {

O usar .̀add()`

$("#DigitoDeVerificacion")
.add("#NumeroIdentificacion")
.keyup(function (e) {

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta