JQUERY,动态文本框id分配给焦点功能

时间:2011-09-30 03:32:17

标签: javascript jquery html

$(document).ready(function(){
var CurrentTextBoxID = "";
var shifton = false;
var IsCapsLockOn = false;   

// toggles the keyboard to show or hide when link is clicked
$(":text").focus(function(e) {              
    CurrentTextBoxID = this.id;
    var top = ($(window).height() - $('#keyboard').height()) - 25;        
    var left = ($(window).width() - $('#keyboard').width()) / 2;

    alert(CurrentTextBoxID + " focus In");

    $('#keyboard').css(
        {               
            "left": left+"px",
            "top": top+"px"
        }
    ).toggle();

});

$('#'+CurrentTextBoxID).blur(function() {
    alert("**");
});


$('#'+CurrentTextBoxID).focusout(function() {
    alert(this.id + " focus out");
});

在此上部代码中,模糊功能和聚焦功能不起作用。 当我更改代码时,它可以工作。

$('#txtTest1').blur(function() {
    alert("**");
});


$('#txtTest1').focusout(function() {
    alert(this.id + " focus out");
});

但是通过改变这样的代码,我无法动态地给出文本框ID。 所以,请让我知道我怎么能这样做。

$( DYNAMIC ID ).focusout(function() { .... });

2 个答案:

答案 0 :(得分:3)

blur()focusout()移到定义focus()的{​​{1}}内。 这对我来说似乎有点不好意思。

最好的办法是在事件动态添加时将事件绑定到CurrentTextBoxID。在这种情况下,我会使用textbox方式绑定您的事件。以下内容可行,但每次live()获取textbox时都会绑定并发生事件。

focus CurrentTextBoxID就像你做的那样,你可以做到这一点,但更好的例子如下。

undefined

或者,您可以使用$(":text").focus(function(e) { CurrentTextBoxID = this.id; var top = ($(window).height() - $('#keyboard').height()) - 25; var left = ($(window).width() - $('#keyboard').width()) / 2; alert(CurrentTextBoxID + " focus In"); $('#keyboard').css( { "left": left+"px", "top": top+"px" } ).toggle(); $('#'+CurrentTextBoxID).blur(function() { alert("**"); }); $('#'+CurrentTextBoxID).focusout(function() { alert(this.id + " focus out"); }); }); 绑定文本框

live()

甚至......

$('.dynamicTextBox').live('blur', function(){
   alert("**");
});

答案 1 :(得分:1)

我认为您需要为所有文本框绑定blurfocusout函数。如果你在focus中逐一执行(如在@Gabe的答案中),那么当下一个focus事件发生时,你将再次绑定该函数。
我想你需要这样做,

$(":text").blur(function() {
    alert("**");
    var element=$(this); // you can get the element here
});


$(":text").focusout(function() {
    alert(this.id + " focus out");
});