Jquery elimina el texto predeterminado del cuadro de texto al enviar

     $('input[class*="defaulttext"]').each(function () {

                    this.value = $(this).attr('title');
                    $(this).addClass('defaultclass');

                    $(this).focus(function () {
                        if (this.value == $(this).attr('title')) {
                            this.value = '';
                            $(this).removeClass('defaultclass');
                        }
                    });

                    $(this).blur(function () {
                    if (this.value == '') {
                        this.value = $(this).attr('title');
                        $(this).addClass('defaultclass');
                    }
                });


                });

Básicamente, esto agrega el efecto de texto de fondo para los cuadros de texto (usa el título). Una vez seleccionado el texto desaparece.

Ahora, tengo un problema con los campos opcionales. Si el usuario no edita estos campos, el texto de fondo predeterminado se envía con el formulario. Entonces, necesito restablecer el valor del campo sin editar una vez que se envía el formulario. ¿Alguna idea de como hacer esto?

Tal vez en el envío del formulario, verifique si el título = valor. Si es así, configúrelo en ''.

preguntado el 03 de mayo de 12 a las 20:05

No está agregando "texto de fondo", en realidad está configurando el valor del campo. ¿Por qué no usar HTML5? marcador de posición ¿atributo? -

j08691: buena sugerencia, pero también debe recordar que la mayoría de los usuarios no usan navegadores modernos que lo admitan. -

No estaba familiarizado con el atributo de marcador de posición. Lo investigare, gracias. -

4 Respuestas

Según el código que tienes, podrías hacer:

$("#yourForm").submit(function () {
     $('input[class*="defaulttext"]').val("");
};

contestado el 03 de mayo de 12 a las 20:05

¿Esto no vaciaría todas las entradas, incluidas las que se han llenado? - aldux

Nah porque en su blur función que está agregando y eliminando la clase predeterminada si tiene un valor. - mattytommo

Se utilizó Complemento jQuery de marcador de posición HTML5 y funcionó bien en este caso.

contestado el 03 de mayo de 12 a las 20:05

Para navegadores compatibles, esta es la solución más elegante: aldux

Podría hacer eso y buscar valores donde title=value. O alternativamente, puede marcar sus campos editados usando jQuery.data ()

contestado el 03 de mayo de 12 a las 20:05

$("#yourForm").submit(function () {
    $('input.defaulttext').each(function() {
        if($(this).val() === $(this).attr('title')) { $(this).val(''); }
    });
};

contestado el 03 de mayo de 12 a las 20:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.