2012-05-11 65 views
15

我從Zend框架的網站形式,並把它在由jQuery Mobile的寫入功能的新文件的反應,但我得到這個錯誤:selectmenu(「刷新」,真)

的功能這

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

代碼文件:

 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

你能給這個「暴徒大小」的詳細信息。我相信這個對象還沒有初始化。 –

+0

類Order_Form_MobileSize_Size延伸Zend_Form的 { 公共功能的init() { $ selSize =新Zend_Form_Element_Select( '尺寸',陣列( 「類」=> 「MOB-大小」, 'ID'=> 'MOB-大小') ); $ AllSize = $ orderModel-> selectSize(); foreach($ AllSize as $ size){ $ options [$ size ['id']] = $ size ['size']; } $ selSize-> setLabel( 'Размер') - > setRequired(真) - > addMultioptions($選項) - >通過setAttribs(陣列( '風格'=> '寬度:40%')); $ this-> addElement($ selSize); return $ this; } } –

+0

我必須刷新此表單才能讓jquerymobile爲它設計 –

回答

38

部隊初始化selectmenu(一個或多個)第一:

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

或使用該短期

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

儘管這是受歡迎的答案,但它並不適用於我的情況,我不相信它也適用於OP。這是因爲它自己的'$(「。mob-size」)'指向選擇菜單AND和JQM爲標籤添加的''元素。 (即它將類傳遞給它創建的新元素。)標籤從不作爲selectmenu初始化,因爲它不能! Jim的解決方案使用'$(「select.mob-size」)來代替,這將確保您不會選擇標籤。 – psyklopz

3

對我來說,如果我不調用「禁用」的方法,我得到了錯誤,而如果我初始化它,選擇沒有禁用,但自身複製之前初始化選擇 - 我試着由標籤名,而不是通過CLASS或ID NAME選擇對象,

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

代替

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

和它的工作無強制初始化

+2

甜,謝謝你。經過試驗,我發現我也可以使用 $('select.select-class-name')在jqm 1.4.5中做同樣的修復。 –

+1

@JimH,你的評論最終成爲我的解決方案。這是因爲它自己的$(「。select-class-name」)指向選擇菜單和JQM爲標籤添加的''元素。 (即它將類傳遞給它創建的新元素。)標籤從不作爲selectmenu初始化,因爲它不能! – psyklopz

3

你這樣做在您的自定義刷新代表團功能:

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

根據enhancement resolution here