简体   繁体   English

表单提交后如何清除输入字段

[英]How to clear input fields after form submit

I am trying to clear the input fields after submitting the form, but the input data is still there, even after submitting the form every time. 我试图在提交表单后清除输入字段,但是即使每次提交表单后,输入数据仍然存在。 I am using ajax jquery form. 我正在使用ajax jquery表单。 How can I fix it? 我该如何解决?

Thanks in advance. 提前致谢。

Code

function sendContact() {
  var valid;
  valid = validateContact();
  if (valid) {
    jQuery.ajax({
      url: "contact_mail.php",
      data: 'userName=' + $("#userName").val() +
        '&userEmail=' + $("#userEmail").val() + '&subject=' + $("#subject")
        .val() + '&content=' + $("#content").val() + '&captcha=' + $("#captcha").val(),
      type: "POST",
      success: function(data) {
        $(".mail-status").html(data);
      },
      error: function() {}
    });
  }
}

function validateContact() {
  var valid = true;
  $(".demoInputBox").css('background-color', '');
  $(".info").html('');

  if (!$("#userName").val()) {
    $("#userName-info").html("(required)");
    $("#userName").css('background-color', '#FFFFDF');
    valid = false;
  }
  if (!$("#userEmail").val()) {
    $("#userEmail-info").html("(required)");
    $("#userEmail").css('background-color', '#FFFFDF');
    valid = false;
  }
  if (!$("#userEmail").val().match(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/)) {
    $("#userEmail-info").html("(invalid)");
    $("#userEmail").css('background-color', '#FFFFDF');
    valid = false;
  }
  if (!$("#subject").val()) {
    $("#subject-info").html("(required)");
    $("#subject").css('background-color', '#FFFFDF');
    valid = false;
  }
  if (!$("#content").val()) {
    $("#content-info").html("(required)");
    $("#content").css('background-color', '#FFFFDF');
    valid = false;
  }
  if (!$("#captcha").val()) {
    $("#captcha-info").html("(required)");
    $("#captcha").css('background-color', '#FFFFDF');
    valid = false;
  }

  return valid;
}

function refreshCaptcha() {
  $("#captcha_code").attr('src', 'captcha_code.php');
}

php PHP

<?php
session_start();
if($_POST["captcha"]==$_SESSION["captcha_code"]){
$toEmail = "web.instamarc@gmail.com";
$mailHeaders = "From: " . $_POST["userName"] . 
"<".  $_POST["userEmail"]    .">\r\n";
if(mail($toEmail, $_POST["subject"], $_POST["content"], $mailHeaders)) {
print "<p class='success'>Email Sent Successfully</p>";
} else {
print "<p class='Error'>Problem in Sending Mail.</p>";
}
} else {
print "<p class='Error'>Enter Correct Captcha Code.</p>";
}
?>

Html HTML

<div id="frmContact">
<div class=row>
<div class="col-md-12">
<div id="mail-status"><?php echo $result; ?></div>
</div>
<div class="col-md-4 col-sm-4">
<span id="userName-info" class="info"></span>
<input type="text" name="userName" id="userName" class="form-control"  
placeholder="Name">

</div>
<div class="col-md-4 col-sm-4">
<span id="userEmail-info" class="info"></span>
<input type="text" name="userEmail" id="userEmail" 
class="form-control" placeholder="Email">
</div>
<div class="col-md-4 col-sm-4">
<span id="subject-info" class="info"></span>
<input type="text" name="subject" id="subject" 
class="form-control"  placeholder="Phone Number">
</div>
<div class="col-md-12">
<span id="content-info" class="info"></span>
<textarea name="content" id="content" 
class="form-control" 
placeholder="Your message" cols="60" rows="6">    </textarea>
</div>
<div class="col-md-6 col-sm-6">
<div class="col-md-6 col-sm-6">
<span id="content-info" class="info"></span>
<input type="text" name="captcha" id="captcha" 
placeholder="Captcha"  class="form-control">
</div>
<div class="col-md-6 col-sm-6 capcha">
<img id="captcha_code" src="captcha_code.php" />
</div>

</div>
<div class="col-md-6 col-sm-6">
<button name="submit" 
class="border-button" onClick="sendContact();"> Send </button>
</div>
</div>
</div>

You are to clear the fields thru JavaScript. 您将通过JavaScript清除字段。 I see you are using jQuery so you can do: 我看到您正在使用jQuery,因此您可以执行以下操作:

    $("#userName, #userEmail").val("")

In your function would be: 在您的功能将是:

//..Ajax function
success: function(data) {
    $(".mail-status").html(data);
    $("#userName, #userEmail").val("")
  },

And so forth. 依此类推。

I suggest using a FORM tag and you can easily reset it by doing: 我建议使用FORM标签,您可以通过执行以下操作轻松重置它:

$('#myformid')[0].reset();

You can use below three functions 您可以使用以下三个功能

/**
 * This function clear all input fields value including button, submit, reset, hidden fields
 * */

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


/**
 * This function clears all input fields value except button, submit, reset, hidden fields
 * */

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

/**
 * This function clear all input fields value except button, submit, reset, hidden fields in different way
 * */

function resetForm(formid)
    { 

            form = $('#'+formid);
            element = ['input','select','textarea'];
            for(i=0; i<element.length; i++) 
            {
                    $.each( form.find(element[i]), function(){      
                            switch($(this).attr('type')) {
                                    case 'text':
                                    case 'select-one':
                                    case 'textarea':
                                    case 'hidden':
                                    case 'file':
                                            $(this).val('');
                                            break;
                                    case 'checkbox':
                                    case 'radio':
                                            $(this).attr('checked',false);
                                            break;
                                    case 'select':
                                           $(this).attr('selected',false);
                                    break;
                            }
                    });
            }

    }

UPDATE As per the html edit in the question below is my answer Use jQuery for resetting the fields 更新按照下面的问题中的html编辑是我的答案使用jQuery重置字段

$(".form-control").val("")

You need to use this function in ajax success 您需要在ajax成功中使用此功能

   success: function(data) {
            $(".mail-status").html(data);
           // resetForm(formid); --> *Since you are not using any form , no need to use this function , use below line jQuery to do this reset.* 
            $(".form-control").val("")
          },

Using JQuery u can do like this 使用JQuery你可以这样做

$("#userName").val("")  
$("#userEmail").val("")
$("#userEmail").val("")
$("#subject").val("")
$("#content").val("")
$("#captcha").val("")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM