2017-03-15 5 views
1

これにイオンレンジライダーを使用します。私はログスケールに設定した私のprettify関数の値を呼び出そうとしています。私のログのスケーリングは機能しますが、他の非同期関数に戻すと同じ結果が得られません。他の関数からのJQueryコール入力値async

私がprettify関数から得た結果が、onStart、OnChange、onFinish関数を通過することを望みます。

onStart: function(data) { 
    imprValue = data.from; 
    console.log("onstart:" + imprValue); 
    inputValues(); 
}, 
onChange: function(data) { 
    imprValue = data.from; 
    console.log("onchange:" + imprValue); 
    inputValues(); 
}, 
onFinish: function(data) { 
    imprValue = prettify(); 
    console.log("onfinish:" + imprValue); 
    inputValues(); 
}, 
prettify: function(n) { 
    // current position 
    var position = Math.floor(n/this.max * 100); 
    // position will be between 0 and 100 
    var minPos = 0, 
     maxPos = 100; 
    // calculate logarithms 
    var minLog = Math.log(this.min), 
     maxLog = Math.log(this.max); 
    // calculate adjustment factor 
    var scale = (maxLog-minLog)/(maxPos-minPos); 
    // round numbers 
    n = Math.floor(Math.exp(minLog + scale * (position - minPos))); 
    console.log("prettify function:" + n); 
    return n; 
} 

ここJsfiddeは: http://jsfiddle.net/jsbegin/7dbowqfd/61/

+0

私はあなたが求めているものについて困惑しています。あなたは 'onStart'や' onChange'で 'prettify'を呼んでいません。何故なの? – Dancrumb

+0

私は一度に1つずつテストを始めていました。私は答えを見つけて下に投稿しました – jsbeginner

答えて

1

は、この作業を手に入れた、今までに誰が見ている場合にはそれを投稿したかったです。あなたがそうのようにそれを呼び出す必要が

imprValue = this.prettify(data.from); 

はここにjsfiddleの作業:あなたが知っておくべきhttp://jsfiddle.net/jsbegin/7dbowqfd/68/

1

を、そのビルドで飾り立てる機能のみを視覚的にスライダー値を改善するためになされました。元のデータには影響しません。

元のデータも変換したい場合は、外部関数を作成する必要があります。このように:

var $range = $(".js-range-slider"); 
var $result = $(".js-result"); 

function transform(num) { 
    var n = num.toString(); 
    return n.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g, "$1" + ","); 
} 

$range.ionRangeSlider({ 
    type: "single", 
    grid: true, 
    min: 10000, 
    max: 10000000, 
    from: 10000, 
    prettify_separator: ",", 
    onStart: function(data) { 
     $result.text(transform(data.from)); 
    }, 
    onChange: function(data) { 
     $result.text(transform(data.from)); 
    } 
}); 

フィドル:http://jsfiddle.net/IonDen/133bvhn3/

+0

デニスさん、ありがとうございました。そして、すばらしいイオンレンジライダー – jsbeginner

関連する問題