【发布时间】:2017-01-10 17:28:31
【问题描述】:
使用 jQuery,我试图迭代页面上的表单元素并将它们分解为每种输入类型的数组。
到目前为止,我的代码并未涵盖所有可能的类型,但现在每个元素都被推送到buttons 列表中。
这是我的 jQuery 代码:
function buildForm(elem) {
var formElements = [],
buttons = [],
radios = [],
checkboxes = [],
selects = [],
textareas = [],
texts = [];
formElements.push($(elem).find('input, textarea, select'));
$.each(formElements, function(index, el) {
if ($(el).is('input[type="submit"],input[type="clear"]')) {
buttons.push($(el));
} else if ($(el).is('input[type="radio"]')) {
radios.push($(el));
} else if ($(el).is('input[type="checkbox"]')) {
checkboxes.push($(el));
} else if ($(el).is('select')) {
selects.push($(el));
} else if ($(el).is('textarea')) {
textareas.push($(el));
} else if ($(el).is('input[type="text"]')) {
texts.push($(el));
}
});
}
编辑:还有一个带有 HTML 的 JSFiddle:https://jsfiddle.net/jakehamiltonaimia/mLd69mhc/
欢迎提供任何其他清理此问题的提示,但不是必需的。 :)
【问题讨论】:
-
问题出在哪里?
-
向我们展示 html 代码
-
为什么只选择它们一起然后拆分它们,为什么不使用正确的选择器开始
-
你为什么不做
buttons.push(formElements.find('button')、radios.push(formElements.find(':radio'))等等而不是循环 -
你也可以使用vanilla js - el.type === 'submit' || el.type === '清除'
标签: javascript jquery arrays forms