onChange事件不会触发

时间:2012-06-08 16:38:47

标签: javascript sharepoint-2007

我使用Internet Explorer 8和Sharepoint 2007。

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

问题:我是一个JavaScript新手,我不能设置事件'onChange'来触发我的功能,或者至少触发'警告(“测试”)...或者只是我正在做它错了,不知道为什么(更有可能)......

假设我想要使用的字段为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')};

如果我想在触发onChange事件时调用myFunction()

知道我做错了什么吗?

4 个答案:

答案 0 :(得分:6)

onchange是一个事件,所以要么把它放在标签中,如下所示:

<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} )

答案 1 :(得分:2)

这样做:

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

或者使用jQuery:

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

很酷,每个人都复制了我的答案!

答案 2 :(得分: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>

答案 3 :(得分:0)

这比其他人都说的有点多余,但可以分享,因为它更直接:

const select = document.getElementById('select')
const newText = document.getElementById('newText')

select.addEventListener("change", e => {
  console.log(e.target.value)
  newText.value = e.target.value
})
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <select id="select">
    <option value="url1">tool_ver1</option>
    <option value="url2">tool_ver2</option>
    <option value="url2" selected >tool_ver3</option>
  </select>
  <button type="submit">Retrieve New Release App Options</button>
<div class="textInput spacer">
  <h2>New Release App Options</h2>
  <textarea id="newText"></textarea>
</div>
  
  
</body>
</html>