Estou tentando obter valores de todas as caixas de seleção atualmente marcadas e armazená-las em uma matriz. Aqui esta o meu codigo ate agora:
$("#merge_button").click(function(event){
event.preventDefault();
var searchIDs = $("#find-table input:checkbox:checked").map(function(){
return $(this).val();
});
console.log(searchIDs);
});
No entanto, isso gera mais do que eu preciso. Não apenas obtenho os valores, mas outras coisas que não quero.
["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002", prevObject: jQuery.fn.jQuery.init [3], contexto: documento, jquery: "1.9.1", construtor…
Gostaria apenas de IDs (3 primeiros itens neste caso).
Ao usar $.each
e enviar valores para uma matriz, obtenho a saída desejada:
$("#find-table input:checkbox:checked").each(function(){ myArray.push($(this).val()); })
["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002"]
No entanto, eu gostaria de usar $.map
, pois me salva uma linha de código e é mais bonita.
obrigado
fonte
$.map
. Obrigado pela solução, ele funciona..get()
é necessário, quando a função está retornando o.val()
de cada item na coleção jQuery. Isso ocorre porque omap
transforma novamente em um objeto jQuery antes de passá-lo parasearchIDs
?DEMO: http://jsfiddle.net/PBhHK/
Basta chamar get () e você terá sua matriz como está escrito nas especificações: http://api.jquery.com/map/
fonte
Você precisa adicionar
.toArray()
ao final da sua.map()
funçãoDemonstração: http://jsfiddle.net/sZQtL/
fonte
Refatorei um pouco o seu código e acredito que vim com a solução que você estava procurando. Basicamente, em vez de definir
searchIDs
como o resultado do.map()
, acabei de inserir os valores em uma matriz.Eu criei um violino com o código em execução.
fonte
Este funcionou para mim!
fonte
Os elementos do formulário necessários no HTML como uma matriz precisavam ser uma matriz no objeto javascript, como se o formulário tivesse sido realmente enviado.
Se houver um formulário com várias caixas de seleção, como:
O resultado é um objeto com:
E há muitas respostas aqui que ajudaram a melhorar meu código, mas elas eram muito complexas ou não queriam exatamente o que eu queria: Converter dados de formulário em objeto JavaScript com jQuery
Funciona, mas pode ser aprimorado: funciona apenas em matrizes unidimensionais e os índices resultantes podem não ser seqüenciais. A propriedade length de uma matriz retorna o próximo número de índice como o comprimento da matriz, não o comprimento real.
Espero que isso tenha ajudado. Namaste!
fonte
fonte
Não use "each". É usado para operações e alterações no mesmo elemento. Use "map" para extrair dados do corpo do elemento e usá-los em outro lugar.
fonte
map
fonte