[英]remove button input from form.elements array javascript
I have a form, and I'm grabbing all input elements inside of it and place them into an their keys and values into an object (That works)... However I wan't to filter out the un needed button... How can I remove it/ ignore it? 我有一个表单,并且要抓取其中的所有输入元素,并将它们放入它们的键中,并将值放入对象中(这是可行的)...但是我不想过滤掉不需要的按钮...如何删除/忽略它?
if I console.log form.elements it returns: 如果我console.log form.elements它返回:
[input#first_name.input-text, input#last_name.input-text, input#username.input-text, input#email.input-text,
button#submit.btn ...]
const formatData = {};
const form = document.getElementById('signup');
console.log(form.elements);
for (let i = 1; i < myForm.elements.length; i++) {
// check if button and remove / ignore
if (form[i] === 'button') { // this doesn't work
delete form[i];
}
const key = form.elements[i].name;
const value = form.elements[i].value;
formatData[key] = value;
How can I make sure button isn't included? 如何确定不包含按钮? :\\ (this is written in jsx syntax)
:\\(这是用jsx语法编写的)
You can filter form.elements
by tagName
. 您可以通过
tagName
过滤form.elements
。
const formatData = {};
const form = document.getElementById('signup');
[].slice.apply( form.elements ) // convert HTMLFormControlsCollection to Array
.filter(( el ) => el.tagName !== 'BUTTON') // filter out all <button> elements
.forEach(function ( el ) {
formatData[ el.name ] = el.value; // add key / value to formatData object
});
OR, if you prefer the for
loop: 或者,如果您更喜欢
for
循环:
const formatData = {};
const form = document.getElementById('signup');
for (let i = 0, n = form.elements.length; i < n; i++) {
if (form.elements[i].tagName === 'BUTTON') continue;
formatData[ form.elements[i].name ] = form.elements[i].value;
}
for (let i = 1; i < myForm.elements.length; i++) {
if (form[i].type !== 'button') { // or as suggested form[i].tagName !== 'BUTTON'
const key = form.elements[i].name;
const value = form.elements[i].value;
formatData[key] = value;
}
and don't you want to loop through all the elements and start the i with 0? 您是否不想遍历所有元素并以0开头i?
var
elementCollection = document.forms[document.forms.length -1].elements,
elementRegistry = Array.from(
elementCollection
).reduce(function (collector, elm) {
if (
(elm.tagName.toLowerCase() !== 'button')
&& !collector.regXIgnoreTypes.test(elm.type)
) {
//var key = (elm.id || elm.name);
var key = elm.name;
if (key !== '') {
collector.elementRegistry[key] = elm;
}
}
return collector;
}, {
regXIgnoreTypes: (/^(?:button|submit|image|hidden)$/),
elementRegistry: {}
}).elementRegistry;
console.log('+++ elementRegistry +++', elementRegistry);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.