【问题标题】:rangeslider.js calling onchange() twicerangeslider.js 调用 onchange() 两次
【发布时间】:2017-06-17 12:10:31
【问题描述】:

我正在开发一个 phonegap 应用程序,我正在使用 rangeslider 使常规的 <input type=range> 元素更具视觉吸引力。但是,当onchange() 事件触发时,我遇到了以下函数的问题:

function store_slider(){
    store_slider_val=document.getElementById("slider").value; //gets the value of the slider
    if(store_slider_val==100){
        //if slider is at 100 give a notification
        navigator.notification.confirm('Mark task as complete?',task_complete_handle,'Hey there!','YES,NO');
        function task_complete_handle(button){
            if(button==1){
                //do stuff
            }
            else{
                //set the slider to 90
                $('#slider').val(90).change();
            }
        }
    }
    else{
        //do other stuff
    }
}

我面临的问题是,当滑块为 100 时,navigator.notification.confirm('Mark task as complete?',task_complete_handle,'Hey there!','YES,NO'); 生成的通知在我在手机中尝试应用程序时出现两次而不是一次(当我在笔记本电脑浏览器中运行它时仅出现一次)。当我不使用 rangeslider 时,代码按预期工作。

我该如何解决这个问题? Rangeslider 是一个完美而简单的解决方案,可以让范围输入看起来更好,我真的很想继续使用它而不是切换到另一个滑块插件。

【问题讨论】:

    标签: javascript html cordova range phonegap


    【解决方案1】:

    我只是通过完全删除 rangeslider.js 并使用另一个插件解决了这个问题,因为它似乎与 rangeslider 的实现方式相关。

    【讨论】:

      【解决方案2】:

      我所做的是仅在值不同时更新模型,这确保了我的模型推送到后端只被调用一次而不是两次,例如:

      if (Model.value != $this.value) {
          Model.value = $this.value;
          PostToBackEnd();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多