none
Error al ejectuar codigo jQuery datePicker RRS feed

  • Pregunta

  • Buenas, tengo el siguiente codigo que ejecuta una function de jQuery 

    $("[ id$=HEntrega ]").datepicker({
                    onClose: function (e) {
                        var vTarget = e.Originaltarget || event.srcElement;
                        if ($(vTarget).hasClass('ui-datepicker-close')) {
                            $.datepicker._clearDate("[ id$=HEntrega ]");
                        }
                    }
                });

    Se supone ( tal y como he visto por varios foros ) que esto deberia de funcionar, el caso es que funciona correctamente tanto en IE como en Chrome, pero no funciona en firefox. A pesar de darle mil vueltas no consigo que funcione ya que siempre salta un error de undefined y por mas que busco todas los intentos me han fallado.

    ¿ Existe alguna forma correcta para que no salte este error ? o al menos alguna forma para que no falle en firefox aunque no funcione correctamente ?

    martes, 10 de noviembre de 2015 11:43

Respuestas

  • >>Si quito el codigo onClose pues ya no me limpiaria el campo cuando presiono el boton del datepicker

    pero porque quieres limpiar el control cuando lo cierras ?

    podrias simplemente hacer

    $("[ id$=HEntrega ]").val('');

    para limpiar el contenido


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 10 de noviembre de 2015 14:12

Todas las respuestas

  • hola

    >>pero no funciona en firefox

    que pasa si quitas el codigo del onClose y solo dejas del datepicker

    si en firefox presionas F12 y usas la solapa "consola" podrias ver si hay algun error de javascript que este afectando el codigo cliente

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 10 de noviembre de 2015 12:06
  • Si quito el codigo onClose pues ya no me limpiaria el campo cuando presiono el boton del datepicker que es justamente lo que quiero hacer, de hecho el codigo onclose en ie y en Chrome hace perfectamente su funcion, al pinchar en el boton close del datepicker deja el campo HEntrega vacio.

    en Firefox se produce un error


    martes, 10 de noviembre de 2015 12:37
  • Claro es que el código debería ser:

    var vTarget = e.Originaltarget || e.srcElement;

    En IE y en Chrome no te falla porque se cumple la primera condición.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    martes, 10 de noviembre de 2015 12:42
  • Eso no es correcto, al menos en mi caso no funciona, si bien es cierto que no da error, no ejecuta correctamente la funcion ni siquiera en IE y Chrome que antes si que la ejecutaba. de hecho la parte que si funciona para IE y Chrome es precisamente el event.srcElement que es lo que ademas da error en ff me temo.


    • Editado Veleras martes, 10 de noviembre de 2015 12:53 mas info
    martes, 10 de noviembre de 2015 12:48
  • Cierto, perdona. Por escribir a la carrera.

    Ahora mismo no lo puedo probar con Firefox pero creo que esto te podría funcionar:

    var evt = e || event;
    var vTarget = evt.Originaltarget || evt.srcElement || evt.target;
    

     


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    martes, 10 de noviembre de 2015 12:58
  • Perdonado quedas, en todo caso de agradecer es tu ayuda, el que no lo intenta nunca cometerá errores.

    Con esta opción estamos en la mismas, no funciona para ninguno de los casos ni FF ni CH ni IE.

    Dado que es una función que proviene de jQuery supongo que dará lo mismo hacer esto 

    onClose: function (e) { ..... }

    que esto

    onClose: function () { ..... }

    Por lo que me valdría cualquier opción; no pensé yo al principio que resultaría tan complejo realizar esta funcionalidad en los distintos navegadores.

    martes, 10 de noviembre de 2015 13:11
  • >>Si quito el codigo onClose pues ya no me limpiaria el campo cuando presiono el boton del datepicker

    pero porque quieres limpiar el control cuando lo cierras ?

    podrias simplemente hacer

    $("[ id$=HEntrega ]").val('');

    para limpiar el contenido


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 10 de noviembre de 2015 14:12
  •  A ver, tengo una fecha campo hentrega, a ese campo le puedo poner una fecha con el datepicker o que traiga una fecha de base de datos y puedo cambiar esa fecha a otra o dejarla vacía.

    Evidentemente me puedo situar en el control y dejar que el usuario la borre como si se tratara de un campo de texto normal y corriente, pero es campo no es editable para evitar que pongan lo que quieran, por lo tanto en mi datepicker, he sustituido el texto del botón Cerrar por "Limpiar" y cuando se ejecuta esa función quiero poner el campo a vacío.

    Si no compruebas si la clase que tiene el botón que se ha pulsado es el close pues siempre se pone en blanco y solo quiero ponerlo en blanco si el usuario así lo quiere y no siempre.

    No se si me habre explicado, pero vamos que no creo que sea nada del otro mundo.

    Otra alternativa es poner un imagebutton al lado de ese campo con un aspa y que ejecute la función de borrado, pero me parece un poco mas cutre.

    martes, 10 de noviembre de 2015 14:32