2010-06-02 5 views
3

J'essaie de sélectionner tous les éléments <input> d'un formulaire, sauf ceux avec des ID contenant les mots foo ou bar. Comment puis-je faire cela en utilisant ExtJS 2.3.0? J'ai essayé ce qui suit:Sélection d'éléments qui ne contiennent pas un certain ID en utilisant ExtJS

Ext.query("select,input:not([id*=foo][id*=bar])", "SomeForm");` 

... mais cela ne fonctionne pas. Hors ID avec foo en eux semble fonctionner très bien:

Ext.query("select,input:not([id*=foo])", "SomeForm")` 

Je ne suis pas sûr de savoir comment ajouter une deuxième chaîne d'identification. Des idées?

Répondre

3

Je ne sais pas comment combiner un sélecteur comme cela, mais je pense que si vous utilisez la fonction de filtre, vous pouvez filtrer la première requête:

Ext.DomQuery.filter(Ext.query('input:not([id*=foo])','SomeForm'),'input:not([id*=bar])'); 

Notez que je juste joué autour d'un peu plus avec cela et cette fonction fonctionne:

Ext.query('input:not([id*=foo]):not([id*=bar])'); 

mais t qu'il me donne la même erreur que vous Mentionné:

Ext.query('input:not([id*=foo]):not([id*=bar])','SomeForm'); 

Il me semble comme un bug avec la fonction de requête ExtJS lorsque vous passez une racine spécifique avec plusieurs sélecteurs d'attributs.

+0

Cela fonctionne. Que faire si je voulais exclu de ID contenant 'baz' en plus de' foo' et 'bar'? Aussi, je semble avoir la même erreur ('Erreur parsing selector') quand je ne passe pas une racine spécifique avec' Ext.query ("input: not ([id * = foo]): not ([id * = bar]) ");" Gardez à l'esprit que je suis limité à Ext 2.3.0. – pmdarrow

+0

Désolé, j'ai lu 3.2 ... si vous obtenez la même erreur, je suppose que c'est un bug dans la version 2.3 alors, ou peut-être que ce n'était pas supporté. Vous devriez pouvoir appeler 'Ext.DomQuery.filter' sur le résultat de l'appel' Ext.Domquery.filter' précédent et ainsi de suite. Si vous en avez beaucoup, je vous suggère de créer votre propre fonction qui reçoit un tableau d'ID à exclure, fait le premier appel 'query', puis boucle le tableau d'ID à exclure et appelle' filter' aussi souvent que nécessaire . À moins que quelqu'un ne sache mieux utiliser ExtJS, c'est ce que je ferais. – SBUJOLD

+0

Je viens juste de faire une boucle comme vous l'avez dit, mais cette réponse fonctionne aussi donc je la marquerai comme acceptée. – pmdarrow

1
Ext.query("select,input:not([id*=foo]):not([id*=bar])", "SomeForm") 
+0

Cela me donne l'erreur suivante dans FF 3.6.3: 'Erreur d'analyse du sélecteur, analyse échouée à"): non ([id * = bar] "'. Peut-être ExtJS n'aime pas pseudo-sélecteurs de chaînage? – pmdarrow

+0

j'ai remarqué une ouverture "sélectionnez et pas de fermeture" s'il vous plaît voir si cela aide –

+0

Voir mon commentaire sur votre message original sushil – pmdarrow

1

Ext.query("select,input:not([id*=foo]):not([id*=bar])", "SomeForm")` essayer cette

+0

Même réponse que Ben - voir mon commentaire sur son – pmdarrow

+0

notez la fermeture "s'il vous plaît essayer que –

+0

J'ai corrigé cette faute de frappe avant même que je l'ai essayé la première fois, il n'a rien corrigé, voici la ligne exacte que j'utilise: 'Ext.query (" entrée: not ([id * = foo]): not ([id * = bar]) "," SomeForm ");' – pmdarrow

Questions connexes