2012-07-09 47 views
1

如果表單中的輸入錯誤,執行一個ajax請求後,我試圖讓這個validatationTextBox被關注並顯示一個指示器消息來顯示問題。如何獲得此validationTextBox的重點?

的代碼是:

dijit.byId("passwordField").focusNode.focus() 

form元素是如所提到的一個ValidationTextBox。

讓我更加困惑的事情是,在dojo 1.5之前,這段代碼只是dijit.byId("passwordField").focus(),而且這個工作正常。我怎樣才能解決這個問題?

我也曾嘗試:

require(["dijit/focus"],function(focusU){ 
    focusU.focus(dojo.byId("ID"));}); 

但是,這也不行。

回答

0

你可以嘗試在表單標籤是這樣的:

<script language="javascript" type="text/javascript"> 
     Sys.Application.add_load 
       (
       function() { 
        window.setTimeout(focus, 1); 
       } 
       ) 
     function focus() { 
      if (document.getElementById('txtComm1') != null) { 
       if (document.getElementById('txtComm1').disabled != true) { 
        document.getElementById('txtComm1').focus(); 
       } 
      } 
     }  

    </script> 
2

如果dijit.widget.focus()失敗,則_FocuxMixin不是它的啓動過程中加載正確。

對於任何dijit.form.Type,你應該能夠通過成功地獲得焦點:

dijit.byId('ID').focus(); 

我以爲你在混亂的DOM事件中心與窗口小部件的焦點處理。如果您啓動widget.focusNode.focus - 您將無法通過任何瀏覽器中的ValidationTextBox消息獲益。

+0

我已經嘗試過dijit.byId( 「ID」)。對焦()。事實上,這是我第一次嘗試。但是這沒有奏效。我嘗試了focusNode的方式,因爲在這個http://stackoverflow.com/questions/8801039/dojo-set-validationtextbox-to-blur那就是答案。但是,這兩種方式都沒有奏效。 – 2012-07-09 15:57:26

+0

http://jsfiddle.net/qQcbq/1/它確實工作,設置'必需'屬性,它會主張focusmixin – mschr 2012-07-09 16:11:35

+0

它是如何猶豫'?有問題,或者你有EM排序? – mschr 2012-07-27 16:59:20

0

如果您的表單域位於dijit/Dialog之內,Dialog將自動關注第一個輸入。在該對話框

autofocus: false 

,在這之後,

widget.focus(); 

應該正常工作:您可以通過設置禁用此行爲。

0

這個工作對我來說...

setTimeout(function(){ 
    widget.focus(); 
}, 100);