2013-10-08 96 views
0

我已將onchange事件寫入文本框。中,當值小於10只意味着我必須集中光標到文本框,我試圖Javascript焦點到文本框

function myFunctionId (elt) { 
     alert(elt.id); 
     if(elt.value < 10) { alert(elt.value); 
     document.getElementById("tester").focus(); 
     }  
    } 

http://jsfiddle.net/dRkuv/588/

但重點是行不通的。我將如何實現這一目標?

+0

​​在撥弄你的HTML是錯誤的,輸入僅僅是一個標籤。 –

+0

它爲我工作。 – icktoofay

+0

Duplicate:http://stackoverflow.com/questions/2097840/putting-focus-on-a-textbox-in-onchange-event 無論如何,這裏是一個[工作版本](http://jsfiddle.net/dRkuv/591 /)。 – 2013-10-08 04:17:24

回答

1

這是我的解決辦法

function myFunctionId (elt) { 
    if(elt.value < 10) { 
     window.setTimeout(function(){ 
      elt.focus(); 
     },0); 
    }  
} 

myFunction在elt失去焦點之前被調用,所以如果你把焦點放在焦點上,它不起作用。但是如果你使用setTimeout函數,稍後會調用它。

1

如果我沒看錯,這是你想要在你的HTML:

<input type="text" onchange="myFunctionId(this);" id="tester" placeholder="Pass Element"> 

在Javscript應該elt.value.length <10,你需要的setTimeout防止文本光標從沒有顯示:

function myFunctionId (elt) { 
    console.log(elt.id); 
    if(elt.value.length < 10) { 
    console.log(elt.value); 
    setTimeout(function(){ 
     elt.focus(); 
    },1); 
    }  
} 
1
function myFunctionId (elt) { 
var val=document.getElementById("tester").value; 

     alert(elt.id); 
     if(val < 10) { alert(val); 
     document.getElementById("tester").focus(); 
     return false; 
     }  
    } 
+0

警報正在工作,但我想集中文本框。 – muthu

1
try this http://jsfiddle.net/shashankreddy09/dRkuv/615/ 


    var interval; 
     var i=0; 
     function myFunctionId (elt) { 
      console.log(elt.id); 
      if(elt.value.length < 10) { //if ur checkin the sting length if its a number use //elt.value<10 
      console.log(elt.value); 
       interval=setInterval(function(){elt.focus(); 
              i++; 
              if(i>1) 
               clearInterval(interval); },0); 
      } 


    } 
0

你可以嘗試在文本字段

function myFunctionId (elt) { 
    //alert(elt.id); 
    if(elt.value.length < 10) { alert(elt.value); 
    elt.focus(); 
    }  
}