jQuery 移动游侠/滑块刷新不工作
jQuery Mobile ranger / slider refresh not working
我正在开发一个基于 HTML5 & CSS & JS 的移动应用程序,由 jQuery 移动设备提供支持。
我正在以编程方式创建表单。我使用文本字段和游侠(滑块)。
创建此输入后,它们没有样式。没问题。为了刷新文本字段样式,我使用:
$(selector).textinput();
.. 一切正常(当然只适用于输入="text")。
但是如果我想刷新一个滑块(游侠),我使用这个:
$(selector).slider("refresh");
我得到一个错误:
Uncaught Error: cannot call methods on slider prior to initialization; attempted to call method 'refresh'
好的。如果我改变这个:
$(selector).slider();
如果有效 50%:看:http://postimg.org/image/8upkakkc1/ ..
============================================= ======================
我的代码:
HTML:
<div data-role="page" id="newclass_step4_complete" data-title="newclass_step4_complete">
<div data-role="content" style="background-color:#fff;">
<form>
<ul data-role="listview" data-inset="true" id="zdup_ul">
<li><br><span style="font-size:50px;color:#FFA500;margin-top:50px;" id="compl_name"></span><hr></li>
<li id="dupa_ultimu">
<hr>
<div class="ui-grid-a">
<div class="ui-block-a"><button type="button" id="discardvalcrits" data-inline='true'><i class='lIcon fa fa-chevron-left'></i>Înapoi</button></div>
<div class="ui-block-b"><button type="button" id="btn_save_ok_vals" data-inline='false' style="color:green;"><i class='lIcon fa fa-check'></i> Salveaza</button></div>
</div>
</li>
</ul>
</form>
</div>
</div>
JS:
$(document).on("click", ".comp_var_btn", function(event){
var idus = $(this).attr("compvar");
$("#compl_name").html(lista_variante[idus]);
var biguscontent = "";
$.each( lista_criterii, function( crit_id, crit_vals ) {
if(crit_vals['evaluare'] == "valmare_avmare")
biguscontent = biguscontent + '<li data-role="fieldcontain" id="cu_del_aici_'+crit_id+'"><label for="cmpvar_'+crit_id+'">'+crit_vals['nume']+':</label><input type="text" id="cmpvar_'+crit_id+'" value="" data-clear-btn="true" placeholder="Valoarea mare .. avantaj mare"></li>';
else if(crit_vals['evaluare'] == "valmic_avmare")
biguscontent = biguscontent + '<li data-role="fieldcontain" id="cu_del_aici_'+crit_id+'"><label for="cmpvar_'+crit_id+'">'+crit_vals['nume']+':</label><input type="text" id="cmpvar_'+crit_id+'" value="" data-clear-btn="true" placeholder="Valoarea mica .. avantaj mare"></li>';
else
biguscontent = biguscontent + '<li data-role="fieldcontain" id="cu_del_aici_'+crit_id+'"><label for="cmpvar_'+crit_id+'">'+crit_vals['nume']+':</label><input type="range" id="cmpvar_'+crit_id+'" value="5" min="1" max="10" data-highlight="true"></li>';
});
$("#dupa_ultimu").before(biguscontent);
window.location = "#newclass_step4_complete";
if(prima_data_tata == 1){
// works ok
$('#zdup_ul').listview('refresh');
$.each( lista_criterii, function( crit_id, crit_vals ) {
if(crit_vals['evaluare'] == "valmare_avmare" || crit_vals['evaluare'] == "valmic_avmare"){
// works ok
$("#cmpvar_"+crit_id).textinput();
}
else{
// HERE BIG FAIL
//$("#cmpvar_"+crit_id).slider( "value", 6 );
//$("#cmpvar_"+crit_id).slider();
//$("#slider").slider('value',9);
$("#cmpvar_"+crit_id).slider("refresh");
//$("#cmpvar_"+crit_id).remove();
}
});
} else prima_data_tata = 1;
});
所以..? :(
为了刷新输入类型范围,您需要做的就是覆盖它的值
你可以这样做:
$('input[type="range"]').val(newVal);
但这可能不适用于您的代码,因为您是从 JS 生成这些输入的
所以。首先,您需要获取 'biguscontent' 并将其分解为多个变量,其中一个是范围输入
你最终会得到这样的结果
var rangeInput = <input type="range" value="" min="" max="" />
var biguscontent = '<li>..' + rangeInput + '...</li>...';
然后您将能够单独定位输入并更改其值
$(rangeInput).val(newVal)
在这里您可以看到一个 fiddle,点击 http://jsfiddle.net/wpa5rqc7/
时范围输入 'refreshing'
我正在开发一个基于 HTML5 & CSS & JS 的移动应用程序,由 jQuery 移动设备提供支持。
我正在以编程方式创建表单。我使用文本字段和游侠(滑块)。 创建此输入后,它们没有样式。没问题。为了刷新文本字段样式,我使用:
$(selector).textinput();
.. 一切正常(当然只适用于输入="text")。
但是如果我想刷新一个滑块(游侠),我使用这个:
$(selector).slider("refresh");
我得到一个错误:
Uncaught Error: cannot call methods on slider prior to initialization; attempted to call method 'refresh'
好的。如果我改变这个:
$(selector).slider();
如果有效 50%:看:http://postimg.org/image/8upkakkc1/ ..
============================================= ======================
我的代码:
HTML:
<div data-role="page" id="newclass_step4_complete" data-title="newclass_step4_complete">
<div data-role="content" style="background-color:#fff;">
<form>
<ul data-role="listview" data-inset="true" id="zdup_ul">
<li><br><span style="font-size:50px;color:#FFA500;margin-top:50px;" id="compl_name"></span><hr></li>
<li id="dupa_ultimu">
<hr>
<div class="ui-grid-a">
<div class="ui-block-a"><button type="button" id="discardvalcrits" data-inline='true'><i class='lIcon fa fa-chevron-left'></i>Înapoi</button></div>
<div class="ui-block-b"><button type="button" id="btn_save_ok_vals" data-inline='false' style="color:green;"><i class='lIcon fa fa-check'></i> Salveaza</button></div>
</div>
</li>
</ul>
</form>
</div>
</div>
JS:
$(document).on("click", ".comp_var_btn", function(event){
var idus = $(this).attr("compvar");
$("#compl_name").html(lista_variante[idus]);
var biguscontent = "";
$.each( lista_criterii, function( crit_id, crit_vals ) {
if(crit_vals['evaluare'] == "valmare_avmare")
biguscontent = biguscontent + '<li data-role="fieldcontain" id="cu_del_aici_'+crit_id+'"><label for="cmpvar_'+crit_id+'">'+crit_vals['nume']+':</label><input type="text" id="cmpvar_'+crit_id+'" value="" data-clear-btn="true" placeholder="Valoarea mare .. avantaj mare"></li>';
else if(crit_vals['evaluare'] == "valmic_avmare")
biguscontent = biguscontent + '<li data-role="fieldcontain" id="cu_del_aici_'+crit_id+'"><label for="cmpvar_'+crit_id+'">'+crit_vals['nume']+':</label><input type="text" id="cmpvar_'+crit_id+'" value="" data-clear-btn="true" placeholder="Valoarea mica .. avantaj mare"></li>';
else
biguscontent = biguscontent + '<li data-role="fieldcontain" id="cu_del_aici_'+crit_id+'"><label for="cmpvar_'+crit_id+'">'+crit_vals['nume']+':</label><input type="range" id="cmpvar_'+crit_id+'" value="5" min="1" max="10" data-highlight="true"></li>';
});
$("#dupa_ultimu").before(biguscontent);
window.location = "#newclass_step4_complete";
if(prima_data_tata == 1){
// works ok
$('#zdup_ul').listview('refresh');
$.each( lista_criterii, function( crit_id, crit_vals ) {
if(crit_vals['evaluare'] == "valmare_avmare" || crit_vals['evaluare'] == "valmic_avmare"){
// works ok
$("#cmpvar_"+crit_id).textinput();
}
else{
// HERE BIG FAIL
//$("#cmpvar_"+crit_id).slider( "value", 6 );
//$("#cmpvar_"+crit_id).slider();
//$("#slider").slider('value',9);
$("#cmpvar_"+crit_id).slider("refresh");
//$("#cmpvar_"+crit_id).remove();
}
});
} else prima_data_tata = 1;
});
所以..? :(
为了刷新输入类型范围,您需要做的就是覆盖它的值
你可以这样做:
$('input[type="range"]').val(newVal);
但这可能不适用于您的代码,因为您是从 JS 生成这些输入的
所以。首先,您需要获取 'biguscontent' 并将其分解为多个变量,其中一个是范围输入
你最终会得到这样的结果
var rangeInput = <input type="range" value="" min="" max="" />
var biguscontent = '<li>..' + rangeInput + '...</li>...';
然后您将能够单独定位输入并更改其值
$(rangeInput).val(newVal)
在这里您可以看到一个 fiddle,点击 http://jsfiddle.net/wpa5rqc7/
时范围输入 'refreshing'