Eu tenho uma página em que o tipo de entrada sempre varia e preciso obter os valores dependendo do tipo de entrada. Portanto, se o tipo é um rádio, preciso obter o que está marcado e, se for uma caixa de seleção, agora preciso marcar o que está marcado e, se for uma lista suspensa, preciso saber qual está selecionado e, se estiver, um texto / área de texto Eu preciso conhecer os valores.
Alguma idéia de como fazer isso?
Respostas:
EDIT 1 de fevereiro de 2013. Devido à popularidade desta resposta e às alterações no jQuery na versão 1.9 (e 2.0) em relação às propriedades e atributos, adicionei algumas notas e um violino para ver como ele funciona ao acessar propriedades / atributos na entrada, botões e algumas opções. O violino aqui: http://jsfiddle.net/pVBU8/1/
obtenha todas as entradas:
obtenha todo o tipo de entradas:
obtenha os valores:
NOTA: .val () NÃO é o mesmo que: verificado para os tipos em que isso é relevante. usar:
Edição: 1 de fevereiro de 2013 - re: jQuery 1.9 use prop () not attr (), pois attr não retornará valores adequados para propriedades que foram alteradas.
ou simplesmente
para obter o valor da verificação - seja ela qual for atualmente. ou simplesmente use o ': marcado' se você quiser apenas aqueles que estão marcados.
EDIT: Aqui está outra maneira de obter o tipo:
EDIT2: Observe que o formato de:
é perferido sobre
que ambos equivalem a:
mas a "entrada" é desejada, portanto, ela só obtém as entradas e não usa o '* "universal quando
$(':radio')
é usada a forma de que equivale a$('*:radio');
EDIT 19 de agosto de 2015: a preferência pelo
$('input[type=radio]');
deve ser usada, pois permite que os navegadores modernos otimizem a busca por uma entrada de rádio.EDIT 1 de fevereiro de 2013 por comentário re: select elements @dariomac
retornará "selecione um" ou "selecione vários", dependendo do atributo "múltiplo" e
retorna o mesmo para a primeira seleção, se existir. e
retornará o tipo, se existir, ou "howdy", se não existir.
retorna a propriedade do primeiro no DOM, se existir, ou "indefinido", se não existir.
retorna o tipo do primeiro caso exista ou um erro se não existir.
fonte
allInputs.attr('type');
obterá apenas o primeiro tipo de entrada de elementos, ie.allInputs[0].attr('type');
se houver mais de um elemento na coleção. O mesmo vale paraallInputs.val();
Se você queria fazer alguma coisa com o tipo ou valor de cada elemento, você teria que fazer algo assimallInputs.each(function(){ var type = $(this).attr('type'); var val = $(this).val() });
Você pode fazer o seguinte:
fonte
Se o que você está dizendo é que deseja obter todas as entradas dentro de um formulário que tenham um valor sem se preocupar com o tipo de entrada, tente o seguinte:
Exemplo: http://jsfiddle.net/nfLfa/
Agora você deve ter um conjunto de elementos de entrada que tenham algum valor.
Você pode colocar os valores em uma matriz:
Ou você pode serializá-los:
fonte
fonte
fonte
O melhor lugar para começar a procurar é http://api.jquery.com/category/selectors/
Isso lhe dará um bom conjunto de exemplos.
Por fim, a seleção de elementos no DOM é realizada usando seletores CSS. Se você pensa em obter um elemento por ID, deseja usar $ ('# elementId'), se deseja que todas as tags de entrada usem $ ('input') e finalmente a parte que eu acho que você vai querer se quiser que todas as tags de entrada com um tipo de caixa de seleção usem $ ('input, [type = checkbox])
Nota: Você encontrará a maioria dos valores desejados nos atributos, portanto o seletor css para atributos é: [attributeName = value]
Só porque você pediu a lista suspensa como colocada em uma caixa de listagem, tente o seguinte:
O código era da memória, por isso, procure erros pequenos
fonte
Comentários:
Suponho que exista exatamente um elemento de formulário, que pode ser uma área de texto, campo de entrada, selecionar formulário, um conjunto de botões de opção ou uma única caixa de seleção (você precisará atualizar meu código se precisar de mais caixas de seleção).
O elemento em questão vive dentro de um elemento com ID
container
(para remover ambiguidades com outros elementos na página).O código retornará o valor do primeiro elemento correspondente encontrado. Desde que eu uso
:checked
e assim por diante, esse deve sempre ser exatamente o valor do que você está procurando.fonte
Parece que a funcionalidade attr está ficando mais obsoleta
fonte
Na minha aplicação, acabei com dois elementos diferentes com o mesmo ID (ruim). Um elemento era uma div e o outro, uma entrada. Eu estava tentando resumir minhas entradas e demorei um pouco para perceber os IDs duplicados. Ao colocar o tipo do elemento que eu queria na frente de #, pude pegar o valor do elemento de entrada e descartar a div:
Espero que ajude.
fonte
fonte
fonte