首先我必須說幾乎全部的人都不須要本身實現表單重置的功能,表單重置功能只須要一個reset
類型的input
就足夠了。<input type="reset" />
this
當你萬不得已時,不妨考慮下我下面的作法,但必須作下提醒,如下代碼不可取,而當你的表單中使用到的控件很少時,或者你有其餘辦法時,那麼就無須浪費時間閱讀下面的代碼了code
function resetForm(ele) { $(ele).closest('table').find('input, select').val(function(){ if(this.tagName == 'SELECT'){ var options = this.options; var that = this; for(var i = 0; i < options.length; i++) { if(options[i].defaultSelected){ return options[i].value; } } return options[0].value; } return this.defaultValue; }); }
我先放上來我正在使用的代碼,須要引入jQuery
,所以就沒有通用性,另外代碼中還包含JavaScript
原生代碼,兩種混雜屬不可取的地方orm
將resetForm
方法在HTML
代碼中調用大概是:<input type="button" onclick="resetForm(this)" />
對象
resetForm
方法中只嘗試將input
和select
重置爲默認值,input
類型的比較簡單,直接取該對象的defaultValue
(此處我居然不知道這個對象是否是DOM對象);對於select
類型須要對它的全部option
進行遍歷,判斷是不是默認選擇(defaultSelected),而後返回該option
的值。實際上若是知道哪一個option
是默認選擇項,也能夠將option
的序號賦值給select
對象的selectedIndex
屬性而達到重置的效果。ip
表單中還可能使用radio
、checkbox
等控件,這裏並無打算拓展resetForm
功能,不過我認爲,這些控件均可以經過它們的默認值(defaultValue)或者默認選擇(defaultSelected)相關信息進行重置吧。
(還真無聊)input