表单提交后无法清除输入值
好的,我已经尝试了所有可以找到的建议,但在提交表单和fadeOut之后,这些值仍然存在。 如果有人有建议……
$(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("").fadeIn(2000); }); }); });
我已经添加了建议,但它仍然无效。 也许我不把它们放在正确的地方……?
编辑 :为什么它不工作阅读您的脚本。 您添加的建议(我的代码)只是全局范围内的常规语句 – 当浏览器加载文件时
- 设置文档就绪方法
- 实现functionvalidation
- 执行set-value-to-blank
- 设置ajaxForm值
我假设您要在validation后重置表单(并继续)。
在这种情况下,您希望在表单完成时运行重置代码。 那是什么时候? 这里: $("#form1").ajaxForm(function(){...
其他人实际上给了你确切的代码(我相信),但我真的认为这是你对计算机和javascript以及语言执行方式的理解问题。 你应该做更多的功课,并尝试遵循你的脚本的逻辑。 简单的调试工具,例如alert("I'm resetting the values now!")
会告诉你代码执行的时间(无论它是否在正确的位置)
在您的代码中没有任何地方实际上尝试清除文本。 这些将是告诉浏览器重置/删除内容的一些指令。 我猜你只想在它正确时才清除它,所以你要把它添加到.ajaxForm
回调中
var name = $('input[name=name]').val(''); //inputs are like this var email = $('input[name=email]').val(''); var message = $('textarea[name=message]').html(''); //textareas are like this
顺便说一下,fadeOut只会让它“淡出”,它最终会隐藏块(css display:none;我猜),但不会改变DOM元素/forms。
提交值时,尝试将输入值设置为空白。
例如,var name = $(’input [name = name]’)。val(”);
使用.val()函数清除文本的值,使用html()函数清除。另外,如果给每个输入一个ID,在jQuery中操作会更容易。
例如,创建一个这样的表单:
然后在你的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! });
$("#form")[0].reset();
这可能有所帮助