2012-05-11 4 views
15

ottengo modulo dal sito Zend Framework e metterlo in risposta a nuovo file in funzione scritta per jQuery Mobile, ma ottengo questo errore:Selezionare Menu ('Aggiorna', true)

uncaught exception: cannot call methods on selectmenu prior to initialization; attempted to call method 'refresh' .

Codice della funzione questo File:

 function addItem(id) { 
     $.ajax({ 
      url:'http://zf.darina.php.nixsolutions.com/order/index/create-order-mobile', 
      dataType:"jsonp", 
      data:{id_good:id}, 
      success:function (resp) { 

       console.log(resp); 
       $('.product-table').empty(); 

       $('.product-table').append(resp.prod); 
       $('.product-table').append(resp.form); 
       $('.add-order-btn').button(); 

       $('.mob-size').selectmenu('refresh', true); 

       $('#block').page(); 
      } 
     }) 
    } 
+0

Puoi dare dettagli su questo 'mob-size'. Credo che questo oggetto non sia ancora inizializzato. –

+0

classe Order_Form_MobileSize_Size estende Zend_Form { public function init() { $ selSize = new Zend_Form_Element_Select ('size', array ("classe" => "mob-size", 'id' => 'mob-size')); $ AllSize = $ orderModel-> selectSize(); foreach ($ AllSize come $ size) { $ options [$ size ['id']] = $ size ['size']; } $ selSize-> setLabel ('Размер') -> setRequired (veri) -> addMultioptions (opzioni $) -> setAttribs (array ('stile' => 'width: 40%')); $ this-> addElement ($ selSize); return $ this; } } –

+0

Devo aggiornare questo modulo per ottenere jquerymobile desigin per esso –

risposta

38

Forza inizializzare il Selezionare Menu (s) prima:

$('.mob-size').selectmenu(); // Initializes 
$('.mob-size').selectmenu('refresh', true); 

o utilizzare questo per breve

$('.mob-size').selectmenu().selectmenu('refresh', true); 
+0

Mentre questa è la risposta popolare, non ha funzionato per la mia situazione e non credo che funzionerà anche per l'OP. Ciò è dovuto al fatto che '$ (" .mob-size ")' sui propri punti al menu di selezione AND a un elemento '' che JQM aggiunge per l'etichetta. (Vale a dire che passa la classe sui nuovi elementi che crea.) L'etichetta non è MAI inizializzata come un menu di selezione, perché non può essere! La soluzione di Jim per usare '$ (" select.mob-size ")' invece farà in modo che tu non selezioni anche l'etichetta. – psyklopz

3

Nel mio caso, se non ero l'inizializzazione di selezione prima di invocare il metodo 'disable' ho ottenuto l'errore, mentre se ero inizializzazione, il prescelto non ha disattivare ma duplicarsi - ho cercato di selezionare l'oggetto da NAME TAG anziché da categoria o nome ID,

$('select').selectmenu('disable'); 

anziché

$('.select-class-name').selectmenu('disable'); 

e ha funzionato senza inizializzazione forzata

+2

Dolce, grazie per questo. Dopo aver sperimentato, ho scoperto che potevo usare anche $ ('select.select-class-name') per fare la stessa correzione in jqm 1.4.5. –

+1

@JimH., Il tuo commento è finito per essere la soluzione per me. Questo perché $ (". Select-class-name") nei propri punti al menu di selezione AND un elemento '' che JQM aggiunge per l'etichetta. (Vale a dire che passa la classe sui nuovi elementi che crea.) L'etichetta non è MAI inizializzata come un menu di selezione, perché non può essere! – psyklopz

3

si esegue questa operazione nella funzione di aggiornamento delegazione personalizzato:

var w = $("#yourinput"); 
if(w.data("mobile-selectmenu") === undefined) { 
    // not initialized yet, lets do so 
    w.selectmenu(); 
} 
w.selectmenu("refresh",true); 

in base alle enhancement resolution here