Dojo Slider isReversed

问题描述 投票:0回答:1

我想要做的是使用onChange检测是否从右向左拖动了道场水平滑块。这恰好出现在IBM XPages中,但下面的CSJS代码区域应该是通用的。如何使用_isReversed属性获取true / false?

<xe:djHorizontalSlider
style="margin-left:5px;width:200px;height:20px"
id="djHorizontalSlider1" showButtons="false" 
defaultValue="1" maximum="15" minimum="1"
intermediateChanges="true" 
discreteValues="8" value="#{viewScope.sliderNumber1}">
<xe:this.converter>
<xp:convertNumber integerOnly="true"
type="number">
</xp:convertNumber>
</xe:this.converter>

<xp:eventHandler event="onChange" submit="false">
<xe:this.script><![CDATA[

//I WANT TO DETECT IN THIS CSJS 
//IF THE SLIDER WAS DRAGGED RIGHT TO LEFT

}]]></xe:this.script>
</xe:djHorizontalSlider>
dojo slider xpages
1个回答
1
投票

onChange事件发生时,小部件已经改变了它的内部值,这使得几乎不可能在这里检测到任何变化。但我写了一个小的解决方法,以检测滑块是否从右向左移动。

您应该将此代码放在onChange处理程序中。它的作用是将当前值保存在小部件本身的数据属性中。当发生另一个更改时,将根据新值检查并使用新值进行更新。这样,您可以将先前的值(也可以是起始值)与新值进行比较。

希望这对你有用!

// find dojo widget
var w = dijit.byId("#{id:djHorizontalSlider1}");

// get previous value from attribute (or default value)
var previousValue = dojo.attr(w.domNode,"data-prev-value") || w.params.value;

// log info about current and previous value
console.log("new value=" + thisEvent);
console.log("previous value=" + previousValue);

//save new value
dojo.attr(w.domNode,"data-prev-value",thisEvent);

// check value 
if(parseInt(thisEvent) < parseInt(previousValue)){

    alert("Detected slide right to left! new value="+thisEvent+", old value="+previousValue);
}
© www.soinside.com 2019 - 2024. All rights reserved.