我从zend框架网站获取表单并将其放在jquery mobile编写的函数中的新文件中,但是我收到此错误:
未捕获的异常:无法在selectmenu之前调用方法 初始化;试图调用方法'刷新'。
此文件的功能代码:
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 :(得分:44)
首先强制初始化选择菜单:
$('.mob-size').selectmenu(); // Initializes
$('.mob-size').selectmenu('refresh', true);
或暂时使用
$('.mob-size').selectmenu().selectmenu('refresh', true);
答案 1 :(得分:3)
在我的情况下,如果我在调用'disable'方法之前没有初始化select我得到了错误,而如果我正在初始化它,select没有禁用但重复本身 - 我试图通过选择标记名称而不是CLASS或ID NAME,
$('select').selectmenu('disable');
而不是
$('.select-class-name').selectmenu('disable');
并且无需强制初始化即可使用
答案 2 :(得分:3)
您可以在自定义刷新委派功能中执行此操作:
var w = $("#yourinput");
if( w.data("mobile-selectmenu") === undefined) {
// not initialized yet, lets do so
w.selectmenu();
}
w.selectmenu("refresh",true);
答案 3 :(得分:0)
我发现了同样的问题,但是更复杂的解决方案。当jqm包装select
元素时,它会将其放在<span>
元素中,该元素与select
元素具有相同的类列表。我改变了对它的引用,而不是阅读:
row.find(".selectCompletion").selectmenu("disable");
现在它写着:
row.find("select.selectCompletion").selectmenu("disable");
指定jquery应该只找到与类名匹配的select
元素,而不是.row中与类名匹配的所有元素,解决了这个问题。
答案 4 :(得分:0)
当我克隆现有的select元素以多次复制原始部分时,这发生在我身上。
为原始元素调用“ 刷新”工作正常,而为克隆部分调用它导致问题中出现错误。
但是,调用 selectmenu()会对表单造成“破坏”,如下图所示:
说明:顶部=原始。 bottom =调用选择菜单后立即破坏了克隆的元素。
解决方案:
以下代码解决了该破坏行为的问题:
cloned_elem.find('select [name = MyClass]') .selectmenu()。selectmenu(“ destroy”)。selectmenu() ;;
这不是理想的解决方案,因为必须调用第一个selectmenu()才能调用selectmenu(“ destroy”),所以我很高兴听到更干净的解决方案。