drupal_add_js file caricato ma non funziona

2 contenuti / 0 new
Ultimo contenuto
drupal_add_js file caricato ma non funziona

Ciao a tutti!
Dettagli: Drupal 7 + ubercart 3;

Ho inserito un file js nel modulo che dovrebbe eseguire un qualcosa all'evento click su radio button del tipo di pagamento, sembrerebbe funzionare tutto ma cosi non è:
Nel modulo aggiungo:

<?php
drupal_add_js
(drupal_get_path('module', 'uc_fee') .'/uc_fee.js');
   
drupal_add_js("\$(document).ready( function () { update_method_line_item('". $form['panes']['payment']['payment_method']['#default_value'] ."'); } );", 'inline');
  }
 
?>

fee.js:
var method_update;
$(document).ready(
  function () {
    $("input:radio[@name='panes[payment][payment_method]']").click(
      function () {
        update_method_line_item(this.value);
      }
    );
  }
);
/**
* Update the payment method
*/
function update_method_line_item(path) { fai qualcosa ...

il sorgente della pagina è cosi:
<head>
<script src=".../uc_fee.js?lx7ykd"></script>  il file js è caricato
<script>$(document).ready( function () { update_method_line_item('cod'); } );</script> la funzione pure
</head>

manca on click() al radio button?!
<div class="form-item form-type-radio form-item-panes-payment-payment-method">
<input type="radio" class="form-radio ajax-processed" value="cim" name="panes[payment][payment_method]" id="edit-panes-payment-payment-method-cim">  <label for="edit-panes-payment-payment-method-cim" class="option">Carta di credito su server sicuro:<br><img src="/sites/all/modules/ubercart/payment/uc_cim/cards.jpg"> </label>
</div>

sapete dirmi dove mi sono perso???

jQuery, per evitare potenziali conflitti, non è disponibile secondo l'alias $ ma devi usarlo in maniera esplicita (o crearti l'alias). Altra cosa, per passare parametri guardati il trasferimento attraverso drupal_add_js('config') ee l'utilizzo dei behavior (per l'utilizzo del tutto in maniera "pulita" all'interno di Drupal).

Il tuo codice dovrebbe diventare qualche cosa TIPO:

<?php
drupal_add_js
(drupal_get_path('module', 'uc_fee') .'/uc_fee.js');
drupal_add_js(array('miomodulo' => array('miachiave' => $form['panes']['payment']['payment_method']['#default_value'])), 'settings');
?>

e il tuo JS una cosa TIPO:

(function($) {
  $(document).ready(function() { alert('faccio cose' + Drupal.settings.miomodulo.miachiave); });
})(jQuery);

La parte con behavior non è implementata e il codice scritto al volo, quindi può essere che non funzioni al primo colpo ;)

Ciao
Marco
--
My blog
Working at @agavee