input_text_1.onblur = input_text_2.select();

时间:2011-02-04 17:26:41

标签: javascript dom xhtml

在firefox中,我创建了一个网页,有两个输入文本元素: input_text_1 input_text_2 。它们的行为类似于密码验证:如果它们的内容不同,即当 onblur 事件 input_text_2 被激活时,onblur的处理程序将警告某事然后选择 input_text_1 的所有文字。

实际上,这并不容易实现,因为我认为事件链不能得到保证:也许,input_text_1选择了文本然后通过一些点击失去焦点。所以,我只是修改了onblur的input_text_1处理程序,如下所示:

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

有更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:0)

以下代码在FireFox / IE / Opera / Safari / Chrome中运行良好,但基于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/