2011-03-28 20 views
0

onclick我有一个函数,当使用滑块时,它将更改文本框的值。它被传递,其具有文本框以更新为一个值的事件变量:手动触发一个文本框传入参数

function updateTextBox(e){ 
    $(e.data.textbox).val($(this).slider('option','value')); //this line works great 
    $(e.data.textbox).change(); //this line works fine in Chrome, but not IE. 
} 

要绑定我传递函数(简化):

slinder.bind('slide', {textbox : '#idOftextbox'}, updateTextBox); 

IE只自动执行改变事件第一行,但然后在第二行发出错误“对象不支持此对象或方法”。但是Chrome不会通过设置值来自动触发更改事件,因此需要第二行。任何想法如何解决这个问题,而不诉诸用户代理检测。

alert(e.data.textbox.change); //给我所有浏览器的函数定义,但不喜欢添加括号。

我甚至试过的eval(e.data.textbox.change)没有任何的运气...

只是要注意的。我很满意我滑块的工作方式,所以我不想替换它。事件如何“冒泡”到文本框中。

+0

是#idOftextbox唯一的吗?如果您尝试触发表单元素以外的其他事件,可能会导致一些问题。 – Capsule 2011-03-28 13:20:51

+0

[获取jQuery以识别.change()in IE](http://stackoverflow.com/questions/208471/getting-jquery-to-recognise-change-in-ie) – Kon 2011-03-28 13:20:58

+0

@Capsule #idOftextbox是唯一的,始终是一个输入元素。不是很重复,因为这是textb牛的如此回答将无法正常工作,因为点击事件与更改不一样。 – Yule 2011-03-28 13:27:24

回答

0

这是因为我有两个绑定到滑块的事件,我没有回答这个问题,因为我认为它是不相关的。

slider.bind( '滑',... slider.bind( 'slidechange',...

不知道为什么错误走了,当我摆脱了e.textbox.change的()行,但通过删除第二个侦听器来解决它