提交表单后无法清除输入值

时间:2012-07-24 16:18:32

标签: jquery forms

好的,我已经尝试了我能找到的所有建议,但在提交表单和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> 

我已经添加了这些建议,但它仍然无效。也许我不是把它们放在正确的地方......?

4 个答案:

答案 0 :(得分:0)

修改:为什么它不起作用 仔细阅读您的脚本。您添加的建议(我的代码)只是全局范围内的常规语句 - 当浏览器加载文件时

  1. 设置文档就绪方法
  2. 实现功能验证
  3. 执行set-value-to-blank
  4. 设置ajaxForm值
  5. 我假设您要在验证后重置表单(并继续)。

    在这种情况下,您希望在表单完成时运行重置代码。那是什么时候?这里:$("#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>
    

    顺便说一句,fadeOut只会让它“淡出”,它最终会隐藏块(css display:none;我猜),但不会改变DOM元素/形式。

答案 1 :(得分:0)

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

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

答案 2 :(得分: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!

});

答案 3 :(得分:0)

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

这可以帮助