2014-03-24 19 views
1

我傳遞一個jQuery表單對象到一個函數。該功能應查看​​所有複選框並查找ID屬性。迭代通過JQuery表單對象獲取輸入

我試過濾功能。但它沒有看到任何輸入字段。

function templateRemove(form){ 

    selectedTemplateSizes = []; 

    var selectedSizesCount = 0; 

    form.filter(':input').each(function(i, e){ 
     console.log($(e)); 
     selectedTemplateSizes.push($(e).attr('id')); 
    }); 

} 

但是沒有任何東西被添加到數組中,沒有任何東西在控制檯中被記錄。這個功能的調用如下:

templateRemove($("#delete-selected-form")); 

我是不是這樣做的權利?

+0

'filter'過濾當前選擇內容,您需要'find'在所選表單內查找'input' –

+0

您可以放置​​HTML代碼嗎? – Roberto

回答

1

使用Find代替Filter ..,它工作正常..

你可以認爲它是這樣的:Find - 選擇項匹配的元素的搜索,而Filter去除選擇匹配元素..

templateRemove($("#delete-selected-form")); 

function templateRemove(form){ 

selectedTemplateSizes = []; 

var selectedSizesCount = 0; 

    form.find(':input').each(function(i, e){ 
    console.log($(e)); 
    selectedTemplateSizes.push($(e).attr('id')); 
    }); 

} 

看到這個提琴:http://jsfiddle.net/jFIT/m9QqX/

3

這可能適合你。

修改功能:

function templateRemove(form){ 
    selectedTemplateSizes = []; 
    var selectedSizesCount = 0; 
    $(form + ' :input').each(function(i, e){ 
     var inputField = $(this); 
     //now you can do whatever you want to do with this input field 
    }); 
} 

,並調用它爲:

templateRemove("#delete-selected-form"); 

即,只是通過該元素的ID作爲一個字符串,而不是對象本身,爲了便於理解。