Jquery mobile jQuery移动滑块值重置为最小值或最大值

Jquery mobile jQuery移动滑块值重置为最小值或最大值,jquery-mobile,slider,Jquery Mobile,Slider,我使用的是jquery移动滑块,当输入控件文本部分的值超出我设置的最小值和最大值范围时,我遇到了一个问题。当控件失去焦点时,它会将其值重置为最小值或最大值,以更接近无效输入值的值为准 我遇到的问题是,用户键入一个无效值,然后单击表单提交按钮,认为他们输入的值已保存。但是,由于在单击“提交”按钮时,滑块一旦失去焦点,就会将该值重置为“最小”或“最大”,因此这是实际保存的值,而不是用户输入的值 如果出现这种情况,我想为用户弹出一条消息,让他们知道他们输入了无效值。有人对如何实现这一目标有什么建议吗?

我使用的是jquery移动滑块,当输入控件文本部分的值超出我设置的最小值和最大值范围时,我遇到了一个问题。当控件失去焦点时,它会将其值重置为最小值或最大值,以更接近无效输入值的值为准

我遇到的问题是,用户键入一个无效值,然后单击表单提交按钮,认为他们输入的值已保存。但是,由于在单击“提交”按钮时,滑块一旦失去焦点,就会将该值重置为“最小”或“最大”,因此这是实际保存的值,而不是用户输入的值

如果出现这种情况,我想为用户弹出一条消息,让他们知道他们输入了无效值。有人对如何实现这一目标有什么建议吗?在滑块的.change事件中测试值是不好的,因为它返回新的重置值

非常感谢您的帮助

根据要求,示例代码:

<script type="text/javascript">
  $("#Answer").change(function() {
     alert($("#Answer").val()); // this value is already the adjusted value, rather than the user entered value
  });
</script>

<label for="Answer" class="ui-input-text"><%=question.Prompt%></label>
<br />
<span id="sliderspan">
   <input style="min-width: 3em;" type="range" name="Answer" id="Answer" value="<%=this.Value%>" min="<%=question.MinimumValue %>" max="<%=question.MaximumValue %>" step="0.1" />
   <span>&deg;<%=question.Units.ToString()%></span>
</span>

$(“#答案”)。更改(函数(){
警报($(“#应答”).val();//此值已经是调整后的值,而不是用户输入的值
});

&度;
为此,我建议为范围输入绑定到KeyUp事件,并将值存储到内部字段(我在输入本身中使用了LastValue),然后绑定到Change事件以比较LastValue和最小/最大值

$("#Answer")
    .bind("keyup", function (e) {
    e.target.LastValue = $(e.target).val();
})
    .bind("change", function (e) {
    if (typeof e.target.LastValue == 'undefined') return;
    var min = parseInt(e.target.min);
    var max = parseInt(e.target.max);
    if (e.target.LastValue > max || e.target.LastValue < min)
        alert("Wrong Data!");
});
$(“#答案”)
.bind(“键控”,功能(e){
e、 target.LastValue=$(e.target.val();
})
.bind(“变更”,功能(e){
if(typeof e.target.LastValue=='undefined')返回;
var min=parseInt(即target.min);
var max=parseInt(e.target.max);
如果(e.target.LastValue>max | | e.target.LastValue
我发现绑定到keyup或其他事件(更改等)没有触发。我怀疑小部件正在阻止事件传播

在我的情况下,我希望用户能够超过最大值,如果用户在输入字段中输入更大的值,滑块将重置为最大值

为此,我修改了刷新函数中的滑块代码(jQuery Mobile 1.4.1),在这一行之后:

max = isInput ? parseFloat( control.attr( "max" ) ) : optionElements.length - 1;
添加此代码:

if(control.val() > max) {
    max = parseFloat( control.val() );
    control.attr( "max", max );
}
在您的情况下,您可以在提交之前检查输入的值,并发出警告和阻止提交


顺便说一句,如果您想知道如何更改库代码,最好的方法是将slider小部件摘录到一个新文件中,进行更改并在加载jquery mobile后加载新文件。您的滑块将覆盖jQuery mobile滑块,如果以后升级jQuery mobile,滑块仍将覆盖(当然取决于对jQuery的其他更改)。

请编辑您的问题并添加一些示例代码