2012-05-11 4 views
15

я получаю форму с Zend Framework, сайта и поместить его в ответ на новый файл в функции, написанной JQuery мобильный, но я получаю эту ошибку: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 ('размер', массив ("класс" => "чернь размер", 'идентификатор' => 'чернь размер')); $ 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 desigin для нее –

ответ

38

Force инициализацию 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

В моем случае, если я не был инициализация выбора перед вызовом «выключить» метод, который я получил ошибку, а если я его инициализации, то выберите не отключали, но дублировать себя - я пытался выберите объект с помощью TAG NAME, а не по 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