手工實現表單重置的部分功能

首先我必須說幾乎全部的人都不須要本身實現表單重置的功能,表單重置功能只須要一個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方法中只嘗試將inputselect重置爲默認值,input類型的比較簡單,直接取該對象的defaultValue(此處我居然不知道這個對象是否是DOM對象);對於select類型須要對它的全部option進行遍歷,判斷是不是默認選擇(defaultSelected),而後返回該option的值。實際上若是知道哪一個option是默認選擇項,也能夠將option的序號賦值給select對象的selectedIndex屬性而達到重置的效果。ip

表單中還可能使用radiocheckbox等控件,這裏並無打算拓展resetForm功能,不過我認爲,這些控件均可以經過它們的默認值(defaultValue)或者默認選擇(defaultSelected)相關信息進行重置吧。
(還真無聊)input

相關文章
相關標籤/搜索