4

如果我在已經設置了value的頁面上放置表單控件,觸發包含表單的重置功能將在頁面加載時返回原始值。如何防止清除我的<input type =「text」>元素的表單重置?

但是,如果我使用JavaScript創建窗體控件,並將其附加到DOM,窗體控件將被刪除並在窗體重置時變爲空白。我怎樣才能防止這種行爲?我想給輸入一個默認值,所以它將被視爲與頁面加載時頁面上的控件相同的方式。

在以下示例中,單擊RESET將清除一個輸入(腳本添加的輸入),但不會清除其他(靜態的)輸入。我想要的是兩種投入都能保持其價值。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.sourceforge.net/" xml:lang="en" lang="en"> 
    <head> 
    </head> 
    <body> 
     <form id="container"> 
      <input type="reset" value="RESET" /> 
      <input type="text" value="DefaultValue" /> 
     </form> 
     <script type="text/javascript"> 
     window.onload = function() { 
      var input = document.createElement('input'); 
      input.setAttribute('value', 'DefaultValue2'); 
      document.getElementById('container').appendChild(input); 
     }; 
     </script> 
    </body> 
</html> 

雖然我沒有在這個簡單的測試案例包括jQuery的,我的項目使用jQuery的,我會很樂意爲一個jQuery的解決方案。

回答

11

形式reset()使用defaultValue財產,因此,所有你需要做的是設置...

window.onload = function() { 
    var input = document.createElement('input'); 
    input.value = input.defaultValue = 'DefaultValue2'; 
    document.getElementById('container').appendChild(input); 
}; 
+0

+1尼斯,我不知道'defaultValue'。 – 2010-08-13 15:56:44

+0

太棒了!謝謝。 – RMorrisey 2010-08-13 16:11:50

0

表格有一個onreset事件,根據ppk可以跨瀏覽器使用。如果按下重置按鈕時,Javascript創建的元素沒有重置爲其初始值,則可以使用該事件「手動」重置它。

但是,我testing重置一個JavaScript創建的元素(我使用的原型在我的例子,但它不應該有所作爲)在Firefox 3.6和Chrome的5部作品,而不需要額外的onreset處理器(但不是在IE6 )。

0

您需要爲默認「重置」輸入添加更多功能,例如,您可以使用onReset事件來設置input's value = 'defaultvalue2'。這將通過onReset方法重置兩個輸入字段,一個是靜態的,另一個是靜態的。

相關問題