2012-07-24 51 views
0

好吧,我已经尝试了所有可以找到的建议,但在提交表单和fadeOut后,这些值仍然存在。如果任何人有一个建议......无法清除表单后的输入值

<script type="text/javascript"> 

$(document).ready(function() { 
    $('#form1').ajaxForm({ beforeSubmit: validate }); 

function validate(formData, jqForm, options) { 
    var name = $('input[name=name]').fieldValue(); 
    var email = $('input[name=email]').fieldValue(); 
    var message = $('textarea[name=message]').fieldValue(); 

if (!name[0]) { 
alert('Please enter a value for name'); 
return false; 
} 
if (!email[0]) { 
alert('Please enter a value for email'); 
return false; 
} 
if (!message[0]) { 
alert('Please enter a value for message'); 
return false; 
} 
} 
var name = $('input[name=name]').val(''); 
var email = $('input[name=email]').val(''); 
var message = $('textarea[name=message]').html(''); 

$("#form1").ajaxForm(function(){ 
     $("#formplic").fadeOut(1000, function() { 
      $(this).html("<img src='images/postauto2.png'/>").fadeIn(2000); 
     }); 
    }); 
}); 
</script> 

我已经添加了建议,但它仍然没有工作。也许我没有把他们放在正确的地方......?

+0

你在哪里删除? – max4ever 2012-07-24 16:22:26

+0

我没有把那个代码不工作。现在它已经存在。但不工作... – 2012-07-24 16:47:50

回答

0

编辑:为什么它不起作用 通读您的脚本。您添加的建议(我的代码)就是在全球范围内有规律的语句 - 当浏览器加载文件时,它

  1. 设置文档准备方法
  2. 实现以下功能验证
  3. 执行设定 - 值对空白
  4. 设置给ajaxForm值

我假设你要重置的形式,它已经验证后(继续前进)。

在这种情况下,您希望重置代码在表单完成时运行。那是什么时候?这里:$("#form1").ajaxForm(function(){...

其他人已经给你确切的代码(我相信),但我真的认为这是一个问题,你的计算机和JavaScript的理解和语言如何执行。你应该做更多的功课,并尝试遵循脚本的逻辑。简单的调试工具,如alert("I'm resetting the values now!")会告诉你,当你的代码执行(无论是在正确的地方或不)


无处在你的代码它实际上试图清除文本。这些将是一些告诉浏览器重置/删除内容的指令。我猜你要清除它,只有当它是正确的,所以你将它添加到.ajaxForm回调

var name = $('input[name=name]').val(''); //inputs are like this <input value="Hi"> 
var email = $('input[name=email]').val(''); 
var message = $('textarea[name=message]').html(''); //textareas are like this <textarea>Hi</textarea> 

顺便说一下,淡出只能使得“淡出”,它结束了隐藏块( CSS显示:无;我猜),但不会更改DOM元素/窗体。

+0

你好,我以前试过,但它不工作。也许我没有把他们放在正确的地方......? – 2012-07-24 16:44:23

+0

@ClaudiuCreanga你可能把它放在错误的地方。添加一个alert(“Hi”);或者是什么,看看它是否在你想要的时候被实际调用。您实际上没有指定何时需要清除它;我假设你想清除它,因为它正在消失? (不知道如果你有它重新出现) – Raekye 2012-07-24 17:42:50

0

尝试在提交值时将输入值设置为空白。例如:

例如, var name = $('input [name = name]')。val('');

0

使用.val()函数清除文本的值,并使用html()函数清除 另外,如果您为每个输入提供一个ID,那么在jQuery中操作会更容易。

例如,创建这样一种形式:

<form method="post" id="frmMessage" action="some_script.php"> 
<input type="text" name="name" id="txtName" /> 
<input type="text" name="email" id="txtEmail" /> 
<textarea name="message" id="txtMessage"></textarea> 
</form> 

然后在您的jQuery代码:

$("#frmMessage").ajaxForm(function() 
{ 
    // Do whatever else you need to do first... 
    // Fade out the form's container 


    $("#txtName").val(''); // Clear the value of each box. 
    $("#txtEmail").val(''); 
    $("#txtMessage").html(''); // Different for textareas! 

}); 
+0

我更新了内容。但它仍然不起作用。我也试着用你的代码。有什么建议么?也许我不会把它们放在我必须去的地方...... – 2012-07-24 16:45:29

+0

你是否检查了你的错误控制台,以确保Javascript没有在其他地方发生错误,从而阻止执行此代码?在Firefox中,您可以按CTRL-SHIFT-J显示错误控制台。然后刷新页面并重新运行脚本。 另外,我发现将'alert()'函数放在关键点上有助于验证我的代码是否真正达到了这一点。 – 2012-07-27 04:38:21

0
$("#form")[0].reset(); 

这将有助于