从javascript渲染的html渲染__doPostBack触发器(真正点击之前)

时间:2014-10-09 15:55:50

标签: javascript asp.net dopostback

我试图从js创建一些新按钮,如:

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

如果ok是我的document.querySelectorAll包装器;

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

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

主要问题是我的__doPostBack是在html渲染时触发的...所以再见当前页...

那么如何从javascript中避免html渲染上的__doPostBack触发器呢?我真的需要它在那里,但工作点击而不是渲染...

1 个答案:

答案 0 :(得分:1)

当您添加事件侦听器时,您实际上正在调用返回undefined的函数并进行回发。因此,如果您要从__doPostBack功能中移除changeCatalogPostback来电,那么addEventListener来电的话会评估到最后并且将等于:

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

addEventListener应该接受function作为第二个参数。使用bind电话:

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