如何以编程方式更改输入onblur?

时间:2010-02-17 19:52:22

标签: javascript

我试图在页面加载完毕后更改文本输入的onblur属性的值。

当我执行以下操作时,它只会激活该功能:

ip.onblur = stopCalcUpInt(this,10);

当我做以下事情时,我取得了成功:

ip.onblur = function onblur(event){stopCalcUpInt(this,10);}

不幸的是,这一点的重点是能够为stopCalcUpInt()动态设置第二个参数。如果我为它硬编码一个值......它工作得很好......但任何将varibles传递给它的尝试都失败了...而不是将变量的值作为第二个参数放置它只是放置变量的纯文本自称。理想情况下,我正在尝试做什么:

ip.onblur = function onblur(event){stopCalcUpInt(this,this.value);}

在这个例子中,当我提醒ip.onblur时,我得到:

5 个答案:

答案 0 :(得分:2)

这取决于this旨在引用的内容。在事件处理程序this中引用正在处理事件的元素。如果这就是你想要的那么你的代码看起来很好; this会指向ip

如果您打算this从事件处理程序外部引用this而不是ip,请尝试以下操作:

var self = this;
ip.onblur = function(event) { stopCalcUpInt(self, self.value); };

答案 1 :(得分:2)

让它发挥作用的答案非常简单,但并不过分明显。而不是:

ip.onblur = function onblur(event){stopCalcUpInt(this,this.value);}

我这样做了:

ip.setAttribute('onblur','stopCalcUpInt(this,\'' + ip.value + '\');');

完美的工作......不再撞我的头撞墙!耶!

答案 2 :(得分:1)

ip.onblur = function() {stopCalcUpInt(this,this.value);}

答案 3 :(得分:1)

ip.onblur是一个事件处理程序...即它是一个函数

现在,当您提醒某个功能时,FF会显示该功能的源代码(如果是用户定义的)。

这就是为什么你会看到变量名的纯文本。

对于事件处理程序,this是当前正在处理事件的元素。因此,如果您正在设置输入框的onblur处理程序,则可以访问该输入框的内容。

您提供的代码示例:

 ip.onblur = function onblur(event){stopCalcUpInt(this,this.value);}

应该正常工作。尝试

 ip.onblur = function onblur(event){alert(this.value); stopCalcUpInt(this,this.value);}

如果你想确定

答案 4 :(得分:0)

stopCalcUpInt是否需要第二个参数中的数字? value属性将返回一个String,而在您的硬编码示例中,您将传递一个数字类型。试试这个:

ip.onblur = function onblur(event){stopCalcUpInt(this,this.value * 1);}

QuirksMode中所述:

  

由于乘法假设数字,   JavaScript使字符串成为数字,   如果可能的话。