2012-05-17 19 views
18

Estoy utilizando el siguiente script para validar mi formulario de contacto.valores de forma claros después del envío ajax

//submission scripts 
    $('.contactForm').submit(function(){ 
     //statements to validate the form 
     var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
     var email = document.getElementById('e-mail'); 
     if (!filter.test(email.value)) { 
      $('.email-missing').show(); 
     } else {$('.email-missing').hide();} 
     if (document.cform.name.value == "") { 
      $('.name-missing').show(); 
     } else {$('.name-missing').hide();} 

     if (document.cform.phone.value == "") { 
      $('.phone-missing').show(); 
     } 
     else if(isNaN(document.cform.phone.value)){ 
     $('.phone-missing').show(); 
     } 
     else {$('.phone-missing').hide();} 

     if (document.cform.message.value == "") { 
      $('.message-missing').show(); 
     } else {$('.message-missing').hide();} 

     if ((document.cform.name.value == "") || (!filter.test(email.value)) || (document.cform.message.value == "") || isNaN(document.cform.phone.value)){ 
      return false; 
     } 

     if ((document.cform.name.value != "") && (filter.test(email.value)) && (document.cform.message.value != "")) { 
      //hide the form 
      //$('.contactForm').hide(); 

      //show the loading bar 
      $('.loader').append($('.bar')); 
      $('.bar').css({display:'block'}); 

     /*document.cform.name.value = ''; 
     document.cform.e-mail.value = ''; 
     document.cform.phone.value = ''; 
     document.cform.message.value = '';*/ 

      //send the ajax request 
      $.post('mail.php',{name:$('#name').val(), 
           email:$('#e-mail').val(), 
           phone:$('#phone').val(), 
           message:$('#message').val()}, 

      //return the data 
      function(data){ 

       //hide the graphic 
       $('.bar').css({display:'none'}); 
       $('.loader').append(data); 

      }); 

      //waits 2000, then closes the form and fades out 
      //setTimeout('$("#backgroundPopup").fadeOut("slow"); $("#contactForm").slideUp("slow")', 2000); 

      //stay on the page 
      return false; 


     } 
    }); 

Esta es mi forma

<form action="mail.php" class="contactForm" id="cform" name="cform" method="post"> 
    <input id="name" type="text" value="" name="name" /> 
    <br /> 
    <span class="name-missing">Please enter your name</span> 
    <input id="e-mail" type="text" value="" name="email" /> 
    <br /> 
    <span class="email-missing">Please enter a valid e-mail</span> 
    <input id="phone" type="text" value="" name="phone" /> 
    <br /> 
    <span class="phone-missing">Please enter a valid phone number</span> 
    <textarea id="message" rows="" cols="" name="message"></textarea> 
    <br /> 
    <span class="message-missing">Please enter message</span> 
    <input class="submit" type="submit" name="submit" value="Submit Form" /> 
</form> 

necesito para borrar los valores de campo de formulario después de presentar con éxito. ¿Cómo puedo hacer esto?

+0

posible duplicado de [jQuery Formulario Claro en una estrecha] (http://stackoverflow.com/questions/1860675/jquery-clear-form-on-close) – Rafay

+1

set 'val()' para vaciar, por ej. '$ ('# name'). val ('')' – deex

Respuesta

58
$("#cform")[0].reset(); 

o en javascript claro:

document.getElementById("cform").reset(); 
+0

No es necesario en 'each' ya que los ID deben ser únicos. – VisioN

+0

Está funcionando. Gracias. – designersvsoft

+0

U son absolutamente correctos – henryabra

1

uso esto:

$('form.contactForm input[type="text"],texatrea, select').val(''); 

o si tiene una referencia a la forma con this:

$('input[type="text"],texatrea, select', this).val(''); 

:input === <input> + <select> s + s <textarea>

+0

+1 de forma alternativa. – VisioN

+0

: la entrada seleccionará 'type = 'submit'' y también restablecerá su valor, lo que no es deseable. –

+0

@Joy. Tienes razón, fijo – gdoron

8

Usted puede hacer esto dentro de su devolución de llamada $ .post llama éxito como éste

$.post('mail.php',{name:$('#name').val(), 
           email:$('#e-mail').val(), 
           phone:$('#phone').val(), 
           message:$('#message').val()}, 

      //return the data 
      function(data){ 

       //hide the graphic 
       $('.bar').css({display:'none'}); 
       $('.loader').append(data); 

       //clear fields 
       $('input[type="text"],textarea').val(''); 

      }); 
+0

También está funcionando. Gracias por las respuestas rápidas. – designersvsoft

+0

Increíble solución. Muchas gracias – GhostRider

1
$('.contactForm').submit(function(){ 
    var that = this; 

    //...more form stuff... 

    $.post('mail.php',{...params...},function(data){ 

     //...more success stuff... 

     that.reset(); 
    }); 
}); 
1

Simplemente

$('#cform')[0].reset(); 
0
$.post('mail.php',{name:$('#name').val(), 
          email:$('#e-mail').val(), 
          phone:$('#phone').val(), 
          message:$('#message').val()}, 

     //return the data 
     function(data){ 
      if(data==<when do you want to clear the form>){ 

      $('#<form Id>').find(':input').each(function() { 
       switch(this.type) { 
         case 'password': 
         case 'select-multiple': 
         case 'select-one': 
         case 'text': 
         case 'textarea': 
          $(this).val(''); 
          break; 
         case 'checkbox': 
         case 'radio': 
          this.checked = false; 
        } 
       }); 
      }  
    }); 

http://www.electrictoolbox.com/jquery-clear-form/

0

funciona: llame a esta función después del éxito de AJAX y envíe su ID de formulario como su parámetro. algo como esto:

Esta función Borrar todos los campos de entrada valor del botón que incluye, enviar, reset, campos ocultos

function resetForm(formid) { 
$('#' + formid + ' :input').each(function(){ 
    $(this).val('').attr('checked',false).attr('selected',false); 
}); 
} 

* Esta función borra todos los campos de entrada de valor excepto el botón, enviar, restablecer, campos ocultos * */

function resetForm(formid) { 
    $(':input','#'+formid) .not(':button, :submit, :reset, :hidden') .val('') 
    .removeAttr('checked') .removeAttr('selected'); 
    } 

ejemplo:

<script> 
    (function($){ 
     function processForm(e){ 
      $.ajax({ 
       url: 'insert.php', 
       dataType: 'text', 
       type: 'post', 
       contentType: 'application/x-www-form-urlencoded', 
       data: $(this).serialize(), 
       success: function(data, textStatus, jQxhr){ 
       $('#alertt').fadeIn(2000); 
       $('#alertt').html(data); 
       $('#alertt').fadeOut(3000); 
       resetForm('userInf'); 
      }, 
      error: function(jqXhr, textStatus, errorThrown){ 
       console.log(errorThrown); 
      } 
     }); 

     e.preventDefault(); 
    } 

    $('#userInf').submit(processForm); 
})(jQuery); 

function resetForm(formid) { 
$(':input','#'+formid) .not(':button, :submit, :reset, :hidden') .val('') 
    .removeAttr('checked') .removeAttr('selected'); 
} 
    </script> 
0

Set ID en forma cuando la presentación del modelo

 <form action="" id="cform"> 

     <input type="submit" name=""> 

    </form> 

    set in jquery 

    document.getElementById("cform").reset(); 
Cuestiones relacionadas