J'ai un problème avec ma forme querystring étant trop long.Désactiver les éléments de formulaire à l'intérieur de div
Je prévois de résoudre ce problème en désactivant simplement tous les éléments de formulaire inutilisés avant de soumettre. Mais je besoin d'aide à faire de cette fonction js ...
Vous devez savoir que j'ai une js-fonction qui montre sous-catégories chaque fois qu'une principale catégorie est choisi. Cela se produit "onChange
" sur une liste déroulante. Donc, "onChange
" de la liste déroulante de la catégorie, le DIV
correct est fait visible en utilisant javascript, et donc en faisant sous-catégories visible pour l'utilisateur à spécifier (les utilisateurs peuvent choisir la couleur, la marque, l'année etc etc dans les sous-catégories).
Par exemple, si vous avez choisi « Cars » de la principale liste déroulante de catégorie, la fonction js fera l'DIV
qui contient tous les « Cars » Options visibles (couleur, faites, année, etc.). Ensuite, si vous avez choisi une autre catégorie, dites "Trucks", "Cars" devient invisible, et le "Trucks" DIV est rendu visible. Simple.
Cependant, mon problème est que même si les DIVs ne sont pas visibles pour l'instant, les éléments de formulaire à l'intérieur sont soumis de toute façon. Ceci est complètement inutile. J'ai donc besoin d'une fonction javascript qui pourrait être intégrée dans la fonction déjà existante qui cache/affiche la sous-catégorie DIVs, ce qui désactiverait tous les éléments à l'intérieur des DIVs inutilisés.
Voici la fonction qui montre/cache DIVs sous-catégorie, et est déclenchée onChange de la principale liste déroulante Catégorie:
var category=document.nav_form_main.nav_category_list.value;
(category=="Cars")?byId("nav_sub_cars").style.display='block' : byId("nav_sub_cars").style.display='none';
(category=="Trucks")?byId("nav_sub_trucks").style.display='block' : byId("nav_sub_trucks").style.display='none';
Je voudrais quelque chose comme ceci:
(category=="Cars")?byId("nav_sub_cars").style.display='block' : disableDiv("nav_sub_cars");
function disableDiv(divId){
Disable all form elements inside divId
AND
make divId invisible.
}
Remarque: les divs contiennent uniquement des éléments de formulaire et des tables. En d'autres termes, je ne m'inquiète pas si tous les éléments à l'intérieur de la div sont désactivés. Par éléments de formulaire, je veux dire: les entrées de texte, les listes de sélection, les cases à cocher et les radios.
Je ne sais pas beaucoup js à tous, de sorte que toute aide à faire de cette fonction qui ne devrait pas être trop difficile est apprécié ...
Merci
Si votre chaîne de requête est trop longue, envisagez de passer au POST. – Gordon
@Gordon - Nous avons dit que [avant] (http://stackoverflow.com/questions/3551116/workaround-for-too-long-querystring-in-ie6-ie7). Alors, encore une fois, pourquoi le POST est-il hors de question? –
POST est unbookmarkable et jette "AVERTISSEMENT! Souhaitez-vous soumettre à nouveau ce formulaire?" quand vous allez * de retour * dans certains navigateurs. – Quentin