Dojo 滑块已反转
Dojo Slider isReversed
我想做的是使用 onChange 检测 dojo 水平滑块是否从右向左拖动。这恰好在 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>
当 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);
}
我想做的是使用 onChange 检测 dojo 水平滑块是否从右向左拖动。这恰好在 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>
当 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);
}