J'ai un peu de mal à ajouter/supprimer des champs d'un formulaire ExtJS. Mon cas d'utilisation est le suivant:Problème lié à l'ajout et à la suppression de champs de formulaire ExtJS
Fournir un ensemble de boutons radio sur le formulaire. Selon le bouton radio sélectionné, affichez un ensemble différent de champs de formulaire. Je ne suis pas familier avec ExtJS, mais ce que je fais est de mettre en cache les champs qui doivent être ajoutés/supprimés et les ajouter/les retirer du formulaire lorsque l'événement de changement de bouton radio est déclenché. Voici une version simplifiée de mon code:
var textFieldA = new Ext.form.TextField({
fieldLabel: 'Text Field A',
name: 'text_field_a',
allowBlank: false
});
var textFieldB = new Ext.form.TextField({
fieldLabel: 'Text Field B',
name: 'text_field_b',
allowBlank: false
});
var form = new Ext.FormPanel({
autoScroll: true,
bodyStyle: 'padding: 5px 5px 0',
border: false,
frame: true,
layout: 'form',
items: [{
xtype: 'fieldset',
fieldLabel: 'Fieldset',
autoHeight: true,
items: [{
xtype: 'radiogroup',
fieldLabel: 'Show text field',
columns: 1,
vertical: true,
items: [
{
xtype: 'radio',
boxLabel: 'Show field a',
name: 'field_to_show',
inputValue: 'a'
},
{
xtype: 'radio',
boxLabel: 'Show field b',
name: 'field_to_show',
inputValue: 'b'
}
],
listeners: {
'change': {
fn: function(radioGroup, selectedRadio) {
switch (selectedRadio.getGroupValue())
{
case 'a':
radioGroup.findParentByType('fieldset').remove(textFieldB);
radioGroup.findParentByType('fieldset').add(textFieldA);
break;
case 'b':
radioGroup.findParentByType('fieldset').remove(textFieldA);
radioGroup.findParentByType('fieldset').add(textFieldB);
break;
}
radioGroup.findParentByType('fieldset').doLayout();
}
}
}
}]
}]
});
form.render('container');
Cela fonctionne la première fois chaque radio est sélectionné, mais les sélections suivantes ne fonctionnent pas comme j'attendre. Dans Firefox, une erreur JavaScript est déclenchée:
L'opération n'est pas prise en charge "code:" 9 [Pause sur cette erreur] return !! (p.compareDocumentPosition (c) & 16); dans le fichier ext-base-debug-w-comments.js
Dans Chrome, seules les étiquettes seront ajoutées au formulaire.
Est-ce que je m'attends à ce que cela fonctionne incorrect?
Ils seront toujours soumis mais pas? Malheureusement, certains champs auraient le même nom (en raison de la façon dont cela est traité côté serveur). –
Avez-vous pensé à utiliser des fieldsets? – SW4