2013-01-02 70 views
0

我試圖限制dijit.form.NumberSpinner,使其只接受0和0777在道場

之間的八進制數創建八進制數字增我試圖做到這一點在構造函數中設置約束,然後覆蓋NumberSpinner的adjust(...)函數。在我的HTML頁面我有:

<input name="umask" id="umask" data-dojo-type="dijit.form.NumberSpinner" 
value="022" data-dojo-props="smallDelta:1, largeDelta:4, 
constraints:{min:0, max:777, places:0}, 
adjust: function(val, delta) { octalAdjust(val, delta, this.constraints); }"/> 

在我包含的JavaScript我有:

function octalAdjust(val, delta, constraints) { 
    ... 
return newval; 
}; 

,我有是,當我點擊「向上」或在「向下」按鈕的問題數字微調器,我的八進制調整功能一次又一次地被調用。我不知道爲什麼它被重複調用?

任何想法?

回答

1

在你的adjust函數中,你沒有返回值octalAdjust - 你只是在調用它。改變你的adjust覆蓋像這樣:

adjust: function(val, delta) { return octalAdjust(val, delta, this.constraints); } 
+0

所以我加入了'回報'建議。然而,如果我單擊微調器上的向上按鈕,並且一次又一次地調用它,我的八進制調整功能仍然被調用,但這次它會導致我的微調器每次增加1。這種情況發生得非常快,而且微調者迅速增加。我試圖在這裏重現這一點 - [http://jsfiddle.net/mW9Rb/5/](http://jsfiddle.net/mW9Rb/5/),但它似乎在我的主代碼庫之外工作正常。其他人有任何建議... – adamretter