2012-03-02 70 views
1

我正尝试使用ajax联系表单向我发送电子邮件,但是我希望在成功发送电子邮件后清除文本字段。我试着将值设置为val(“”),但它似乎没有工作。我怎样才能使这个工作?如何在发送消息后清除我的文本字段

$(document).ready(function(){ 
$("#ajax-contact-form").submit(function(){ 

// 'this' refers to the current submitted form 
var str = $(this).serialize(); 

    $.ajax({ 
    type: "POST", 
    url: "inc/contact.php", 
    data: str, 
    success: function(msg){ 

$("#note").ajaxComplete(function(event, request, settings){ 

if(msg == 'OK') // Message Sent? Show the 'Thank You' message 
{ 
result = '<div class="notification_ok">Your message has been sent. Thank you!</div>'; 
$("#fields").val(""); 
} 
else 
{ 
result = msg; 
} 

$(this).html(result); 

}); 

} 

}); 

return false; 

}); 

}); 

< ------------------------- HTML ---------------- ---------->

<center> 

<center><h3>A Tableless Contact Form (JQuery & AJAX)</h3></center> 

<div align="left" style="width: 500px;"> 

<fieldset class="info_fieldset"><legend>Contact</legend> 

<div id="note"></div> 
<div id="fields"> 

<form id="ajax-contact-form" action="javascript:alert('success!');"> 

<INPUT class="textbox" type="text" name="name" value=""><br /> 

<INPUT class="textbox" type="text" name="email" value=""><br /> 

<INPUT class="textbox" type="text" name="subject" value=""><br /> 

<TEXTAREA class="textbox" NAME="message" ROWS="5" COLS="25"></TEXTAREA><br /> 

<INPUT class="button" type="submit" name="submit" value="Send Message"> 
</form> 

</div> 

</fieldset> 

</div> 

</center> 
+0

请发布相应的HTML标记。如果你不显示代码,很难给你提供帮助。 – 2012-03-02 11:35:36

+0

如果我理解你的问题,那么你应该打电话给你$(“#fields”)。val(“”);内部成功回调函数。 – 2012-03-02 11:40:34

回答

3

我建议你的选择器$('#fields')是问题所在。不用看你的HTML就很难知道,但是选择器'#fields'只会匹配带有ID字段的标签 - 其中应该只有1个(文档中的ID应该是唯一的)。

根据您的JavaScript(并假设AJAX部分作品),那么下面应该作为替代工作的$("#fields").val("");

$("#ajax-contact-form").find('input, textarea').val(""); 

这应该针对内的Ajax的非接触的所有输入和textarea的标签形式表单并重置其值。您可能需要更复杂一些才能将选择标记重置为默认值。