Bonjour,

Je boss sur symfony 1.4 et en fait j'aimerai pouvoir faire apparaître un champs lorsqu'on sélectionne un élément dans une liste déroulante, mais voilà je ne sais pas comment récupérer les id des champs pour dire en javascript que se champs va être passer à "block", pour le moment voici mon fichier form.class :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
<?php
   class PaymentForm extends BasePaymentForm
{
  // Définition d'un tableau privé pour créer un liste déroulante !
  private static  $typePaiement = array (
	'Mode de Paiement'		=> 'Mode de Paiement',
	'Cheque'				=> 'Cheque',
	'Carte bancaire'		=> 'Carte bancaire',
	'Prelevement bancaire'	=> 'Prelevement bancaire',
	'Numeraire'				=> 'Numeraire',
    'Perception'			=> 'Perception'
  );
 
  private static $nomBanque = array (
  	'BNP' 				=> 'BNP',
  	'Caisse depargne' 	=> 'Caisse d epargne',
	'CMB' 				=> 'CMB',
	'Autres' 			=> 'Autres...'
  );
 
  public function configure()
  {
    $this->widgetSchema['invoice_id'] 	= new sfWidgetFormInputHidden();
    $this->widgetSchema['customer_id'] 	= new sfWidgetFormInputHidden();
    $this->widgetSchema['amount'] 		= new sfWidgetFormInputText(array(), array('class' => 'amount'));
    $this->widgetSchema['notes'] 		= new sfWidgetFormInputText(array(), array('class' => 'notes', 'style' => 'display:none'));
	$this->widgetSchema['mode'] 		= new sfWidgetFormSelect(array('choices' => self::$typePaiement), array('onchange' => "javascript:selectMode(this.value, this.form);"));
  //	$this->widgetSchema['banque']		= new sfWidgetFormSelect(array('choises' => self::$nomBanque), array('class' => 'banque', 'id' => 'banque', 'style' => 'display:none'));
  	$this->widgetSchema['num_cheque']	= new sfWidgetFormInput(array(), array('class' => 'cheque', 'id' => 'num_cheque', 'style' => 'display:none'));
  	$this->widgetSchema['rib1']			= new sfWidgetFormInput(array(), array('class' => 'rib1', 'id' => 'rib1', 'style' => 'display:none'));
  	$this->widgetSchema['rib2']			= new sfWidgetFormInput(array(), array('class' => 'rib2', 'id' => 'rib2', 'style' => 'display:none'));
  	$this->widgetSchema['rib3']			= new sfWidgetFormInput(array(), array('class' => 'rib3', 'id' => 'rib3', 'style' => 'display:none'));
  	$this->widgetSchema['rib4']			= new sfWidgetFormInput(array(), array('class' => 'rib4', 'id' => 'rib5', 'style' => 'display:none'));
    $this->widgetSchema['date']  		= new sfWidgetFormI18nJQueryDate($this->JQueryDateOptions);
 
    $this->widgetSchema->setLabels(array(
      'date'   => 'Date',
      'banque' => 'Banque',
      'amount' => 'Amount',
      'notes'  => 'Notes'
    ));
 
    $this->setDefaults(array(
      'date'   => time(),
    ));
 
    $this->widgetSchema->setFormFormatterName('xit');
  }
 
}
?>
et ensuite j'insère dans la partie html le javascript :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<form action="<?php echo url_for('payments/form') ?>" method="post" class="payments-form">
  <ul class="payments">
    <?php echo $form ?>
  </ul>
  <input type="hidden" name="invoice_id" class="invoice_id" value="<?php echo $invoice_id ?>">
  <div class="buttons text-right">
    <?php echo gButton(__('Add payment'), "class=action add-payment rel=payments:add") ?>
    <?php echo gButton(__('Cancel'), 'class=action cancel rel=payments:cancel'); ?>
    <?php echo gButton(__('Save'), "type=submit class=action save rel=payments:save") ?>
  </div>
</form>
 
<?php
	echo javascript_tag('
		function selectMode(type, form) {
				//alert(type);
				alert(form.cheque);

				if (type == "Cheque")
				{
					form.cheque.style.display = "block";
				}
				if (type == "Carte bancaire")		alert("Mode carte bancaire active");
			}
		');
?>
Pour le moment il n'y a pas d'erreur il ne se passe juste rien mais c'est normal car je ne vois pas comment récupérer les id car ils peuvent changer, je ne peux pas envoyer en dur l'id!!

j'espère que vous pourrez m'aider !!