2011-02-04 10 views
0

在firefox中,我做了一個網頁,裏面有兩個輸入文本元素:input_text_1input_text_2。他們表現得像密碼驗證:如果它們的內容是不同的,即當input_text_2的onblur事件被激活時,的onblur的處理程序將警報的東西,然後選擇input_text_1所有文本。input_text_1.onblur = input_text_2.select();

實際上,這並不容易實現,因爲我認爲事件鏈不確定:也許,input_text_1選擇了文本,然後通過點擊失去焦點。因此,我就砍在input_text_1的的onblur的處理程序如下:

setTimeout("document.getElementById('input_text_1').select()", 100);

是否有一個更優雅的解決方案?

回答

0

下面的代碼在Firefox/IE /歌劇/ Safari /鉻細,但基於WebKit的瀏覽器並不總是聚焦成輸入:

var blurHandler = function() { 
    var input1 = document.getElementById('input1'); 
    if(this.value !== input1.value) { 
     alert('Passwords are not equal'); 
     if(input1.selectionStart) { 
      input1.selectionStart = 0; 
      input1.selectionEnd = input1.value.length; 
     } 
     input1.focus(); 
     if(input1.select) input1.select(); 
    } 
}; 

var input2 = document.getElementById('input2'); 

if(input2.addEventListener) 
    input2.addEventListener('blur', blurHandler, true); 
else 
    input2.attachEvent('onblur', blurHandler); 

你可以嘗試http://jsfiddle.net/twilightfeel/3ggP6/3/

+0

的示例代碼給出是瀏覽器可靠的,不是嗎? :-) – 2011-02-08 18:59:00