【问题标题】:How to get ClientID in a variable如何在变量中获取 ClientID
【发布时间】:2015-07-14 07:20:13
【问题描述】:

我在页面上有 7 个 7 周的复选框和 7 天的单独时间选择器。选中复选框时,我想显示该工作日的时间选择器,如果未选中,我想隐藏相应的时间选择器

我已经使用以下代码来获取它,它也可以工作。

function Chk_WeekDay_Clicked(ctrl, week) {
    if (ctrl.checked) {
        if (week == "Monday")
            document.getElementById("<%= Tm_Monday_From.ClientID %>").style.display = "";
        else if (week == "Tuesday")
            document.getElementById("<%= Tm_Tuesday_From.ClientID %>").style.display = "";
        else if (week == "Wednesday")
            document.getElementById("<%= Tm_Wednesday_From.ClientID %>").style.display = "";
       //Rest of the days 
    }
    else{
        if (week == "Monday")
            document.getElementById("<%= Tm_Monday_From.ClientID %>").style.display = "none";
        else if (week == "Tuesday")
            document.getElementById("<%= Tm_Tuesday_From.ClientID %>").style.display = "none";
        else if (week == "Wednesday")
            document.getElementById("<%= Tm_Wednesday_From.ClientID %>").style.display = "none";
        //Rest of the days 
    }
}

Chk_WeekDay_Clicked 是一个适用于所有工作日复选框的事件处理程序。第一个参数是 Clicked CheckBox 控件,第二个参数是工作日名称。

所有时间选择器控件的名称具有相同的命名模式,Tm_[WeekName]_From

所以,我的问题是,我可以用几行来代替使用这么多 if-else 吗?类似于下面的代码。

function Chk_WeekDay_Clicked(ctrl, week) {
    //I want this controlId by using parameter. And I must get it by ClientID as I am using it on page having MasterPage.
    var controlId = "Tm_" + week + "_From";
    if (ctrl.checked) {
        document.getElementById(controlId).style.display = "";
    }
    else {
        document.getElementById(controlId).style.display = "none";
        }
}

我的实际问题是如何在变量中获取 Control 的 ClientId。由于我的页面使用母版页,我必须使用 ClientID 来获取控件 ID。

那么,任何人都可以提出解决方案

【问题讨论】:

  • 你能显示一些 html 吗?
  • 你是怎么调用函数Chk_WeekDay_Clicked的?
  • @MairajAhmad

标签: javascript jquery asp.net .net


【解决方案1】:

ClientID 由 ASP.NET 生成,不能使用 JavaScript 变量创建。但是你可以做这样的事情

function Chk_WeekDay_Clicked(ctrl, week) {

    //Since Client ID is generated by ASP.NET
    //Create a list of ids
    var controls  = {
        "monday" : "<%= Tm_Monday_From.ClientID %>",
        "tuesday" : "<%= Tm_Tuesday_From.ClientID %>",
        "wednesday" : "<%= Tm_Wednesday_From.ClientID %>",
    }

    //Fetch Control ID
    var controlId = controls[week.toLowerCase()];

    //Desired operation
    if (ctrl.checked) {
        document.getElementById(controlId).style.display = "";
    }
    else{
        document.getElementById(controlId).style.display = "none";
    }
}

【讨论】:

    【解决方案2】:

    如果您是passing control 本身的功能,您可以directly 访问properties 的那个control

    function Chk_WeekDay_Clicked(ctrl, week) {
        if (ctrl.checked) 
            ctrl.style.display = "";
        else 
            ctrl.style.display = "none";
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 2013-04-15
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      相关资源
      最近更新 更多