2013-07-23 3 views
1

У меня возникли проблемы с очисткой формы после нажатия отправки и проверки. В этой форме есть три части. HTML, JS и PHP. Форма отправляет и проверяет правильность, но поля не очищаются после. Я попробовал несколько способов очистить его, но мне не повезло.Как очистить форму после проверки?

<form id="formR" name="formR"> 
    <input type="hidden" name="q" id="q" value="formR"> 
    <input type="hidden" name="zip" id="zip" value="12345"> 
    <p> 
    <label> 
    <input name="Name" type="text" placeholder="Name" id="name" onBlur="if(this.value=='') { this.value='Your Name' }" onFocus="if(this.value=='Your Name') { this.value='' }" value="Your Name"> 
    </label><br> 
    <label> 
    <input name="email" type="text" placeholder="E-mail" id="email" onBlur="if(this.value=='') { this.value='E-mail' }" onFocus="if(this.value=='E-mail') { this.value='' }" value="E-mail"> 
    </label><br> 
    <label> 
    <input name="phone" type="text" placeholder="Phone Number" id="phone" maxlength="10" onBlur="if(this.value=='') { this.value='Phone Number' }" onFocus="if(this.value=='Phone Number') { this.value='' }" value="Phone Number"> 
    </label><br> 
    </p> 
    <input name="quote" id="quote" type="hidden" value="Recreational" /> 
    <input name="Submit" type="button" value="Submit" onClick="validateForm()"> 
    </form> 
function isNumberKey(evt) 
    { 
    var charCode = (evt.which) ? evt.which : event.keyCode 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 

    return true; 
    } 

    function updateZip() 
    { 
    document.getElementById('zip').value = document.getElementById('zipcode').value; 
    } 

    function validateForm() 
    { 
    if(document.getElementById('name').value.length > 0 && document.getElementById('email').value.length > 0 && document.getElementById('phone').value.length > 0 && document.getElementById('name').value != 'Name' && document.getElementById('email').value != 'E-mail' && document.getElementById('phone').value != 'Phone Number') 
    { 
     if((document.getElementById('email').value.indexOf('@') != -1) && (document.getElementById('email').value.indexOf('.') != -1)) 
      { 
      subForm(); 
      return true; 
     } 
     else  
     { 
      alert('Please enter a valid email address!'); 
      return false; 
     } 
    } 
    else 
    { 
    alert('Please enter all your information in first!'); 
    return false; 
    } 
    } 

    function subForm() 
    { 

    //var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone; //alert (dataString);return false; 
$.ajax({ 
type: "POST", 
url: "sendEmail2.php", 
data: $("#formR").serialize(), 
success: function(msg) { 
showNotification({ 
message: msg, 
type: "success", 
autoClose: true, 
duration: 10 
}) 
} 
}); 
return false; 
$("formR")[ 0 ].reset(); 
} 

Плюс есть код PHP, связанный с тем, что я не уверен, если это является причиной того, почему форма не очищая. Может быть, я помещаю его в неправильное место?

<?php 
//Email sender... 
//Config 
`$emailTo = '[email protected]'; 
$ip = $_SERVER['REMOTE_ADDR']; 
if($_POST['q'] == 'formR') 
{ 
//verify ip address: 
$validateIP = true; 
try{ 
$cont = file_get_contents("logs/formR.txt"); 
$lines = explode("\n",$cont); 
foreach($lines as $s) 
{ 
    if(strpos($s,$ip) !== false) 
    $validateIP = false; 
} 

if($validateIP == false) 
echo "A request has already been made with IP address: ".$ip.". Please wait until we contact you!"; 
} 
catch(Exception $e) 
{ 
    echo "An error occurred, please make sure your ip address is not masked!"; 
} 

$name = $_POST['Name']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
$quote = $_POST['quote']; 
$headers = "From: " . strip_tags($_POST['email']) . "\r\n"; 
$headers .= "Reply-To: ". strip_tags($_POST['email']) . "\r\n"; 
//$headers .= "CC: [email protected]\r\n"; 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 

$subject = "New Quote Request From: ".$name; 
$message = "<h3>A quote has been requested:</h3><hr/>Name: ".$name."<br/>Email: ".$email."<br/>Phone Number: ".$phone."<br/>Quote: ".$quote."<br/><br/><br/>Request Time: ".date("Y-m-d H:i:s")."<br/>Requesting IP: ".$ip; 
if($validateIP) 
{ 
    if(mail($emailTo, $subject, $message, $headers)) 
    { 
     echo "Thank you, your quote will be processed! We will contact you shortly."; 
     //Write ip to log file... 
     $file = 'logs/formR.txt'; 
     $current = file_get_contents($file); 
     $current .= $ip." - ".date("d/m/y : H:i:s", time())."\n"; 
     file_put_contents($file, $current); 
    } 
    else 
    echo "An error occurred sending your email, please try again later!"; 
} 
} 
else 
echo "Oops! An error occurred... Please email us at: ".$emailTo; 
?> 
+0

Посмотрите на это: http://stackoverflow.com/questions/680241/resetting-a-multi-stage-form-with-jquery/680252 – musicnothing

+0

Также вы возвращаете ложь перед вызовом 'reset() '. – musicnothing

+2

@AlexMorrise, сразу после вызова, чтобы вернуть false ;? :) – aquinas

ответ

1

Вы должны делать:

$("#formR")[0].reset(); //<--forgot the # because that's the form's ID 

И вы, вероятно, не нужно [0] в: $("#formR")[0].reset();

И поставил эту линию до возвращения заявления - вы в настоящее время это после.

Предполагается, что у вас есть какой-то плагин jquery, который предоставляет функцию «сброса» - я этого раньше не видел в основной библиотеке jquery.

+0

Не бить мертвой лошади, но в дополнение к этому, вы должны положить ее перед возвращением. – musicnothing

+0

@AlexMorrise хороший catch! Добавлено обновление. – Icarus

0

После проверки и отправки формы, если вы хотите сбросить значения до значений по умолчанию (значений, которые они изначально имели), вы можете просто вручную установить переменные php для этих значений по умолчанию. Итак, если значения были первоначально пустыми, установите переменные в "" и снова присоедините их к форме.
Если вы используете AJAX для отправки формы, вы можете использовать JavaScript, чтобы очистить содержимое, а также можете просто обновить страницу. Это позаботится об этом.
Если у вас нет проблем, сброс формы не должен создавать никаких проблем.

Надеюсь, это поможет.

Смежные вопросы