2012-05-17 10 views
18

私のコンタクトフォームを検証するために、次のスクリプトを使用しています。提出後のフォームの値をクリアする

//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; 


     } 
    }); 

これは私のフォーム

<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> 

である私は正常に提出した後、フォームフィールドの値をクリアする必要があります。これどうやってするの?

+0

[近くのjQueryのフォームのクリア]の可能な重複を(http://stackoverflow.com/questions/1860675/jquery-clear-form-on-close)提出形でセットID – Rafay

+1

'val()'を空にするように設定します。 '$( '#name').val( '')' – deex

答えて

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

またはプレーンJavaScriptで:

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

IDは一意でなければならないので、 'each'には必要ありません。 – VisioN

+0

これは機能しています。ありがとう。 – designersvsoft

+0

Uは絶対に正しいです – henryabra

1

使用この:

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

またはあなたがthisとフォームへの参照がある場合:

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

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

+0

+1をクリアできません。 – VisioN

+0

:入力は 'type = 'submit''を選択し、それも値をリセットします。これは望ましくありません。 –

+0

@Joy。あなたは正しいです。 – gdoron

8

あなたの$ .postこの

$.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

これも機能しています。迅速な返信をありがとう。 – designersvsoft

+0

素晴らしい修正。どうもありがとう – GhostRider

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

    //...more form stuff... 

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

     //...more success stuff... 

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

単に

$('#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

それは働きます:この関数をajaxの成功の後に呼び出し、あなたのフォームidをパラメーターとして送信します。このような何か:

この関数は、明確なすべての入力値は、隠しフィールドをリセットし、リセット、提出隠しフィールド

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

*この機能は、すべての入力をクリアボタンを除いた値をフィールド、提出ボタンを含むフィールド * */

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

例:

<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

フォーム

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

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

    </form> 

    set in jquery 

    document.getElementById("cform").reset(); 
関連する問題