0

我有一个Sharepoint列表,我想用JavaScript自定义editForm.aspx页面。SharePoint将javascript事件添加到editForm.aspx页面

问题是我无法管理添加任何事件到该页面中的控件。我能够得到我的控制与此代码的参考:

var textarea1; 
var objForm = document.forms[0]; 
function FindField() { 
    var title; 
    title= $().SPServices.SPGetDisplayFromStatic({ listName: "MyList", columnStaticName: "mycolumn" }); 
    textarea1 = ChooseFieldByTitle("TextField", title); 
} 

function ChooseFieldByTitle(TypeField, title) { 
    var elem; 
    for (idx = 0; idx < objForm.elements.length; idx++) { 
     elem = objForm.elements[idx]; 

     if (elem.id.indexOf(TypeField) != -1 && 
     elem.title == title) { 
      return elem; 
     } 
    } 

    return null; 
}; 

这运行良好,但我不能在此控件上附加任何事件。我已经尝试了下面的代码(字段是textArea):

Field.attachEvent("onchange", myFunction); 
Field.addEventListener("onchange", myFunction, false); 
Field.onchange = myFunction() {}; 

当我更改textArea nothings的内容发生时。当我使用IE开发工具进行调试时,“myFunction”永远不会被调用。我究竟做错了什么?我已经看过SPServices JQuery库,但似乎没有任何关系到javascript事件。

做过任何人有线索吗?

非常感谢。

回答

0

当您选择新值时,“onchange”事件由下拉框激发。它不会为Textarea开火。在你的情况下,你可能想要检查KeyUp事件或模糊事件。

此外,您可能想使用jQuery或其他库来处理事件。

+0

我也尝试过使用onkeypress,但它不起作用。我会看看onKeyUp tooo谢谢 – jumojer

1

尝试使用Jquery,这是一个使用了很多的Javascript库。它使例如选择对象更容易。如果你想将它与spservices(或另一个库)相结合,添加以下行您的aspx页面的PlaceHolderMain下:

<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server"> 
<script language="javascript" type="text/javascript" src="/SiteAssets/js/jquery-1.9.0.js"></script> 
<script language="javascript" type="text/javascript" src="/SiteAssets/js/jquery.SPServices-0.7.2.min.js"></script> 
<script language="javascript" type="text/javascript" src="/SiteAssets/js/myjavascriptfile.js"></script> 

然后,您可以通过jQuery选择页面上的对象,并立即联系到该事件如:

$(":input[title$='atitleofsomefield']").keyup(function() {     
        // do stuff    
      }) 

这里是jQuery的事件列表:http://api.jquery.com/category/events/

0

,我发现做到这一点是通过一个定时器的唯一途径。看看这样的事情:

$(document).ready(function() { 
    var initialValue = undefined; 
    Field.on('change', function(){ 
     //If the value has changed, run the function 
     if(initialValue==undefined || Field.val()!=initialValue){ 
      initialValue = Field.val(); 
      myFunction(); 
     }); 
    //Reinitialize the timer 
    checkForChange(); 
}); 
//Timer function to throw the 'changed' event 
function checkForChange() { 
    setTimeout(triggerChange, 1500); 
} 
//Send the changed event for Field 
function triggerChange(){ 
    Field.trigger('change'); 
} 

然后在你的功能,你做你的常规逻辑。

相关问题