2012-06-08 355 views
3

我使用Internet Explorer 8和Sharepoint 2007.onChange事件不会触发

简报:我有一个NewForm,其中包含列表中的各个字段。我需要使用javascript,从其中一个字段获取用户引入的值(在文本框中),并使用onChange将其粘贴到同一页中的其他字段(其他文本框)上。

问题:我是一个JavaScript新手,我无法设置事件'onChange'来触发我的功能,或者至少触发'alert(“Test”)...或者我只是做错了,不知道为什么(更可能)...

让我们假设我想要使用的字段具有FieldName =“IDTeam”,type =“text”和id =“id_TeamField”。

//My JS below "PlaceHolderMain" 

_spBodyOnLoadFunctionNames.push("setTxtBoxesValues"); 

function setTxtBoxesValues() 
{  
    //snipped 

    getField('text','IDTeam').onChange = function(){alert('Test')}; 
    //"getField('text', 'IDTeam).onChange = function(){myFunction()};" 
    //If I want to call myFunction() when onChange event is triggered  
    } 

此外,而不是getfield命令,尝试这样做:

document.getElementById('id_TeamField').onChange = function(){alert('Test')}; 

如果我想打电话给myFunction的当onChange事件被触发

的是什么,我做错了任何想法()?

回答

4

平变化是一个事件,这样无论你把它的标签是这样的:

<input type="text" id="IDTeam" onchange="(call function here)" /> 

或应用的addEventListener到DOM对象:

document.getElementById("IDTeam").addEventListener("change", function() {//call function here}); 

在IE6中,你可能需要:(不当然,如果它很少人使用ie6现在)

document.getElementById("IDTeam").attachEvent("onchange", function() {//call function here}) 
+0

试过了“把它放在标签“之前(以及最近一次以防万一)。仍然没有工作。 不知道它是否有帮助,但现在我看它...它说:“在IE 6.0中,'onchange'属性不被接纳。 –

+0

@MayerM你应该指出,如果你仍然坚持ie6。它很烂。看到我上面的版本。 – NSF

+0

Sry,不知道...我在IE 8上运行它,但在Designer 2007中,它说“辅助方案:IE 6.0”(我刚刚看到它:S) ...仍然没有:/谢谢,虽然:) –

1

这样做:

window.onload = function() { 
    document.getElementById('id_TeamField').addEventListener('change', function() { 
     alert('test'); 
    }); 
}; 

或者使用jQuery:

$('#id_TeamField').on('change', function() { 
    alert('test'); 
}); 

酷,大家抄我的答案!

+0

感谢您的快速响应:) 不幸的是,它没有工作:/(仍然没有做任何事情)。 –

+1

@MayerM - 是的,它的确如此:http://jsfiddle.net/kE4CV/ onchange事件不会触发,直到输入模糊 – PitaJ

+0

我敢肯定,你测试它,并工作...但没有工作我(没有解决方案)。 也许这是我的设计器(一些配置)错了吗? 我提到NSF,我刚刚注意到,在页面编辑器选项中,它说“辅助方案:IE 6.0”,即使我在IE8中运行页面。 –

0

您可以通过

添加事件侦听器

document.getElementById('id_TeamField').addEventListener('change', function(){alert('test');}); 

添加的onChange到标签

<select onChange='function() { alert('test');}' name='IDTeam' id='id_TeamField' > 
    <option>option1</option> 
    <option>option2</option> 
    <option>option3</option> 
</select>