如何将HTML控件传递给另一个javascript函数

时间:2017-08-11 11:18:08

标签: javascript jquery html asp.net gridview

我想将HTML控件传递给JavaScript中的另一个函数。我正在调用一个模式弹出窗口,它有一个输入控件和一个保存按钮。

我调用模态弹出窗口的函数将整个GridView行作为参数。我想将此传递给另一个javascript函数,该函数将在模式对话框中单击按钮时调用。

我尝试如下,但它传递了一个字符串变量。

function ShowDialogPeoplePicker(id, requestType, cntrl) {

    var row = cntrl.parentNode.parentNode;
    var rowIndex = row.rowIndex - 1;
    var Approvers = row.cells[1].getElementsByTagName("span")[0];

    if (requestType == "AddApprovers") {
        $('#btnAddApprover').removeAttr('onclick');
        $('#btnAddApprover').attr('onClick', 'if (!setApprovers(\''  +cntrl + '\')) return false;');
    }
}

单击按钮将调用以下函数,并将GridView行内的值设置为

function setApprovers(cntrl)
{
    var usernames= $("#hdnApproversName_CTO").val();
    var row = cntrl.parentNode.parentNode;
    var rowIndex = row.rowIndex - 1;
    row.cells[1].getElementsByTagName("span")[0].innerHTML = usernames;

    $("#overlayTasks").hide();
    $("#dialogTasks").hide();

    return false;
}

2 个答案:

答案 0 :(得分:0)

而不是

var countriesKey = new List<long>() {45, 36, 6974, 366,....};
var keys = Context.VW_ProductCountries
                  .GroupBy(pc => pc.ProductKey)
                  .Where(grp => grp.Any(pc => countriesKey.Contains(pc.CountryKey) && !grp.Any(x => x.LocalProductKey != null)))
                  .SelectMany(grp => grp.Select(pc => pc.Productkey))
                  .Distinct();

var query2 = Context.VW_Product.Where(p => keys.Contains(p.ProductKey));
var result = query1.Concat(query2);

使用

$('#btnAddApprover').attr('onClick', 'if (!setApprovers(\''  +cntrl + '\')) return false;');

答案 1 :(得分:0)

而不是像这样附加你的点击处理程序:

$('#btnAddApprover').attr('onClick', 'if (!setApprovers(\''  +cntrl + '\')) return false;');

请改为尝试:

$('#btnAddApprover').on('click', function() {
    setApprovers(cntrl);
});

如果您需要删除以前添加的事件侦听器,可以使用以下方法执行此操作:

$('#btnAddApprover').off('click');

或者,如果您想首先将听众附加到一次听,您可以使用:

$('#btnAddApprover').one('click', function() {
    setApprovers(cntrl);
});

(使用one代替on)。希望这有帮助!