$(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() { .... });
答案 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)
我认为您需要为所有文本框绑定blur
和focusout
函数。如果你在focus
中逐一执行(如在@Gabe的答案中),那么当下一个focus
事件发生时,你将再次绑定该函数。
我想你需要这样做,
$(":text").blur(function() {
alert("**");
var element=$(this); // you can get the element here
});
$(":text").focusout(function() {
alert(this.id + " focus out");
});