2014-10-09 20 views
0

我試圖從像爵士創造出一些新的按鈕:__doPostBack觸發從JavaScript渲染(前實際點擊)

var nextYearList =""; 

... 
nextYearList += "<button type='button' customparam='" + newCatalogList[l].code + "|" + newBaseName + "' ><span class='catName'>" + newCatalogList[l].name + "</span><span class='catYears'>" + newCatalogList[l].startDate + " - " + newCatalogList[l].endDate + "</span></button>"; 
... 
ok('#YearNavigation .panelNextYear')[0].innerHTML = nextYearList; 

var xListYears = ok('.panelNextYear button[customparam]'); 
for (var f = 0; f < xListYears.length; f++) 
{ 
    xListYears[f].addEventListener('click', changeCatalogPostback(xListYears[f].getAttribute('customparam'),true)); 
} 

如果確定是我的document.querySelectorAll包裝;

ok = function (model) 
{ 
    return document.querySelectorAll(model); 
}; 

changeCatalogPostback= function (parameter,checker) 
{ 
    if(checker) 
     __doPostBack('changeCatalog',parameter); 
}; 

主要的問題是,我__doPostBack被觸發html呈現......所以拜拜了當前頁面...

所以,我怎麼能避免在HTML中__doPostBack觸發從JavaScript渲染?我真的需要它在那裏,但工作點擊,而不是在渲染...

+0

請發佈您的ok功能定義。 – Hatjhie 2014-10-09 15:59:36

回答

1

當你添加一個事件偵聽器,你實際上調用的函數返回undefined併發回。所以,如果你將​​3210功能刪除__doPostBack電話與addEventListener電話線將評估到年底將等於:

xListYears[f].addEventListener('click', undefined); 

相反addEventListener應該接受一個function作爲第二個參數。使用bind電話:

xListYears[f].addEventListener(
    'click', 
    changeCatalogPostback.bind(this, xListYears[f].getAttribute('customparam'), true)); 
+0

我會在星期一試一下(我沒有訪問代碼,直到星期一導致它在intralan連接) – HellBaby 2014-10-10 10:37:02

+0

測試和工作(謝謝) – HellBaby 2014-10-15 06:40:57