web-dev-qa-db-fra.com

comment utiliser jquery pour sélectionner toutes les entrées, qui ne sont pas soumises, réinitialisées ou bouton?

J'essaie de sélectionner tous les éléments d'entrée sauf le type d'entrée = "soumettre/réinitialiser/bouton

J'ai essayé de faire un sélecteur comme celui-ci:

inputSelector = 'input:not(input[type=button], input[type=submit], input[type=reset]), textarea, select';

Mais cela ne fonctionne pas, car les boutons d'envoi font toujours partie de la sélection finale.

Toute idée de ce qui ne va pas avec ce qui précède.

Merci!

36
frequent

Essayez de modifier votre sélecteur pour chaîner .not(...) comme:

var inputs = $('input, textarea, select')
                .not(':input[type=button], :input[type=submit], :input[type=reset]');

$(inputs).each(function() {
    console.log(this.type);
});

Cela le rend (sans doute) plus facile à lire, et devrait fonctionner comme vous vous y attendez.

58
Michael Robinson

Cette réponse est sans doute plus difficile à lire que celle de Michael Robinson, mais je la trouve plus succincte. Plutôt que d'exécuter la fonction not(), vous pouvez la sélectionner à l'aide de :input Pour rassembler tous les éléments du formulaire, puis filtrer avec la pseudo-classe :not() pour chaque type d'entrée indésirable.

De la documentation de l'API jQuery ( https://api.jquery.com/input-selector/ ):

Le sélecteur :input Sélectionne essentiellement tous les contrôles de formulaire.

La version du sélecteur de type "CSS", les sélecteurs d'éléments :not() psuedo sont séparés et peuvent également être utilisés dans CSS 3:

var inputs = $("#theForm").find(":input:not([type=button]):not([type=submit]):not([type=reset])");
6
Sean Kendle