簡體   English   中英

ASP.NET javascript參數為null

[英]ASP.NET javascript parameter is null

我有一些JavaScript可以更改日歷擴展程序控件的功能,我想將參數傳遞給(ID),並且該參數永遠不會被設置。 當我在js文件中對參數進行硬編碼時,該函數有效,但是我很難找出為什么可以將參數傳遞給函數。

這是我正在使用的aspx代碼的示例:

<ajax:CalendarExtender ID="clxStartMonth" runat="server" TargetControlID="txtStartMonth" Format="MM/yyyy" DefaultView="Months" ClientIDMode="Static" OnClientHidden="onCalendarHidden('clxStartMonth');" OnClientShown="onCalendarShown('clxStartMonth');"  ></ajax:CalendarExtender>

如您所見,我正在嘗試將控件ID傳遞給由OnClientHidden和OnClientShown事件觸發的函數。

這是JavaScript函數:

function onCalendarHidden(clx) {
var cal = $find(clx);

if (cal._monthsBody) {
    for (var i = 0; i < cal._monthsBody.rows.length; i++) {
        var row = cal._monthsBody.rows[i];
        for (var j = 0; j < row.cells.length; j++) {
            Sys.UI.DomEvent.removeHandler(row.cells[j].firstChild, "click", call);
        }
    }
}
}

function onCalendarShown(clx) {
var cal = $find(clx);
cal._switchMode("months", true);

if (cal._monthsBody) {
    for (var i = 0; i < cal._monthsBody.rows.length; i++) {
        var row = cal._monthsBody.rows[i];
        for (var j = 0; j < row.cells.length; j++) {
            Sys.UI.DomEvent.addHandler(row.cells[j].firstChild, "click", call);
        }
    }
}
}

function call(eventElement) {
var target = eventElement.target;
switch (target.mode) {
    case "month":
        var cal = $find("clxStartMonth");
        cal._visibleDate = target.date;
        cal.set_selectedDate(target.date);
        cal._blur.post(true);
        cal.raiseDateSelectionChanged();
        break;
}
}

關於如何解決此問題的任何想法?

在運行時查看HTML源代碼(右鍵單擊頁面,然后選擇“查看源代碼”)。 驗證您的控件clxStartMonth實際上是您控件的ID,並且沒有被更改為其他名稱(例如ctl0 $ clxStartMonth ...)。 如果控件ID已更改,則將clxStartMonth控件上的ClientIDMode屬性設置為“靜態”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM