2012-07-24 39 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(); 

這將有助於