Estoy probando los eventos slider en jQueryMobile y me falta algo.jQueryMobile: cómo trabajar con eventos de control deslizante?
código de la página es:
<div data-role="fieldcontain">
<label for="slider">Input slider:</label>
<input type="range" name="slider" id="slider" value="0" min="0" max="100" />
</div>
y si lo hago:
$("#slider").data("events");
consigo
blur, focus, keyup, remove
Lo que quiero hacer es obtener el valor una vez que suelta por el usuario el control deslizante
y que tiene un gancho al evento keyup como
$("#slider").bind("keyup", function() { alert('here'); });
no hace absolutamente nada :(
hay que decir que me supuesto erróneamente que jquery mobile usa jQueryUI controles ya que era mi primer pensamiento, pero ahora trabajando en profundidad en los eventos, puedo ver que este no es el caso, solo en términos de CSS Design.
¿Qué puedo hacer?
jQuery Mobile deslizante source code se puede conocer en Git si ayuda a nadie así una página prueba se puede encontrar en JSBin
Según tengo entendido, el #slider
es el cuadro de texto con el valor, por lo que tendría que enganchar en el control deslizante como el código generado para este control deslizante es:
<div data-role="fieldcontain" class="ui-field-contain ui-body ui-br">
<label for="slider" class="ui-input-text ui-slider" id="slider-label">Input slider:</label>
<input data-type="range" max="100" min="0" value="0" id="slider" name="slider" class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c ui-slider-input" />
<div role="application" class="ui-slider ui-btn-down-c ui-btn-corner-all">
<a class="ui-slider-handle ui-btn ui-btn-corner-all ui-shadow ui-btn-up-c" href="#" data-theme="c" role="slider" aria-valuemin="0" aria-valuemax="100" aria-valuenow="54" aria-valuetext="54" title="54" aria-labelledby="slider-label" style="left: 54%;">
<span class="ui-btn-inner ui-btn-corner-all">
<span class="ui-btn-text"></span>
</span>
</a>
</div>
</div>
y control de los acontecimientos en el ancla manejador consigo sólo el evento click
$("#slider").next().find("a").data("events");
Fix
de Iván respuesta, sólo tenemos:
<div data-role="fieldcontain">
<label for="slider">Input slider:</label>
<input type="range" name="slider" id="slider" value="0" min="0" max="100" />
</div>
y luego
$(document).bind("pagecreate", function(event, ui) {
$('#slider').siblings('.ui-slider').bind('tap', function(event, ui){ makeAjaxChange($(this).siblings('input')); });
$('#slider').siblings('.ui-slider a').bind('taphold', function(event, ui){ makeAjaxChange($(this).parent().siblings('input'));
});
function makeAjaxChange(elem) {
alert(elem.val());
}
Gracias Ivan por la cara.
Encontraste exactamente el mismo problema que me hace una semana. jQMobile aunque juraron que trabajan en la interfaz de usuario de jQuery, este no es el caso. Los widgets móviles de jQuery simplemente se parecen a los widgets UI, pero no siguen el mismo concepto de interfaz de usuario que proporciona una interfaz para el control como ganchos y propiedades específicos, excepto atributos html específicos que en mi humilde opinión están muy lejos de ser útil y potencialmente dañino para el marcado HTML. –
Una solución similar a la de Ivan: [jquery forum] (http://forum.jquery.com/topic/how-to-execute-javascript-code-when-finger-is-lifted-from-a-slider) Esa es la solo uno funcionó para mí. – user1127860