2013-01-17 71 views
0

我遇到了此问题,因为我需要在asp:textbox上启用datepicker功能,因为我在某些索引上更改了我的asp:dropdownlist选项。我的下拉列表索引更改后无法更改CssClass

这是我的ASP:这里我没有落后程序分配从码值下拉列表控制:

<asp:DropDownList ID="ddlHORating" runat="server" CssClass="ctlControl" /> 

但这里是例如它怎么会看起来更高版本:

  <asp:DropDownList ID="ddlHORating" runat="server" CssClass="ctlControl"> 
       <asp:ListItem Value="OK" Text="6" /> 
       <asp:ListItem Value="OK" Text="5" /> 
       <asp:ListItem Value="OK" Text="4" /> 
       <asp:ListItem Value="OK" Text="3" /> 
       <asp:ListItem Value="WORST" Text="2" /> 
       <asp:ListItem Value="WORST" Text="1" /> 
       <asp:ListItem Value="WORST" Text="0" /> 
      </asp:DropDownList> 

我做在我的代码后面重新设置我的asp:dropdownlist控件上的javascript函数:

ddlHORating.Attributes.Add("onchange", "JavaScript: ICRESDateEnabler();"); 

这是我的asp:这应该得到它的启用一次我在下拉列表中选择该项目日期选择器功能textboxt控制,目前的日期选择器功能将只启用了通过它的CssClass如果值是“watermarkText”,就必须改变“ watermarkDate”:

<asp:TextBox ID="txtICRESRevDate" runat="server" CssClass="watermarkText" Text="Select a date from calendar button only" Tooltip="Select a date from calendar button only" /> 

这是我使用的脚本:

<script type="text/javascript"> 
    $(document).ready(function ICRESDateEnabler() { 
     var ddl = document.getElementById('<%= ddlHORating.ClientID %>'); 
     var ddlID = ddl.selectedIndex; 
     alert("Selected Index is : " + ddl.selectedIndex); 
     if (parseInt(ddlID) >= 4) { 
      document.getElementById('<%= txtICRESRevDate.ClientID %>').className = "watermarkText"; 
      alert("It's working");//Testing 
     } 
     else { 
      document.getElementById('<%= txtICRESRevDate.ClientID %>').className = "watermarkDate"; 
      alert("Failed!");//Testing 
     } 
    }); 
</script> 

我的脚本将继续运行&提示警报‘失败’不管是选择。 它假设我的asp:文本框的右侧有datepicker图标,但它不会。

有人可以指出我正确的方向来实现这一目标吗?

更新:

我设法改变ASP类名:通过改变ddlID到parseInt函数(dllID),但文本框现在还无法获得日期选择器图标可见

更新时间:1月18日2013〜添加真正的代码(仅适用于相关的)

OK家伙,这里是我已经修剪只有这个问题的代码,希望它可以让你检查它:

.body 
    { 
     width: 1100px; 
     table-layout: auto; 
     border-style: none; 
     border-width: 1pt; 
     vertical-align: central; 
     background-color: white !important; 
     font-family:verdana,arial,helvetica,sans-serif; 
     color:#000000; 
    } 

    .lblDesc 
    { 
     color: #ed1b24; 
     font-size: 14pt !important; 
     border-bottom-width: 1px; 
     border-bottom-style: solid; 
     border-bottom-color: #fabea6; 
     padding-left: 5px; 
    } 

    .tblBody 
    { 
     width: 100%; 
     table-layout: auto; 
     border-style: none; 
     border-width: 1pt; 
     vertical-align: central; 
    } 

    .trRow 
    { 
     height: 35px !important; 
     text-align: left !important; 
     background-repeat: no-repeat; 
    } 

    .tdLabel 
    { 
     font-size: 8pt; 
     font-weight: bold; 
     color: #525252; 
     padding-left: 10px; 
    } 

    .tdControl 
    { 
     border-color: inherit; 
     border-width: 1px; 
     width : 35%; 
     border-style: none; 
     background-color: rgb(249, 249, 249); 
     margin-left: 40px; 
    } 

    .tdButton 
    { 
     text-align: right !important; 
     padding-right: 40px; 
    } 

    .ctlButton 
    { 
     border-style: solid; 
     border-top-style: solid; 
     border: 1px; 
     width: 120px; 
    } 

    .ctlControl 
    { 
     width: 89%; 
     padding-left: 5px; 
    } 

    .tdSplitter 
    { 
     width: 2%; 
     border-style: none; 
    } 

    .watermarkDate 
    { 
     color:#999; 
     width: 89%; 
     padding-left: 5px; 
     font-style:italic; 
     font-family:verdana,arial,helvetica,sans-serif; 
    } 

    .watermarkText 
    { 
     color:#999; 
     width: 89%; 
     padding-left: 5px; 
     font-style: italic; 
     font-family:verdana,arial,helvetica,sans-serif; 
    } 

    .currenciesOnly 
    { 
     color:#999; 
     text-align: left; 
     width: 89%; 
     padding-left: 5px; 
     font-style: italic; 
    } 

    .numeric 
    { 
     color:#999; 
     width: 89%; 
     padding-left: 5px; 
     font-style: italic; 
    } 
</style> 
<script type="text/javascript" src="~/_layouts/script/jquery-1.8.2.js"></script> 
<script type="text/javascript" src="~/_layouts/script/jquery-ui.js"></script> 
<script type="text/javascript" src="~/_layouts/script/jquery.ui.widget.js"></script> 
<script type="text/javascript" src="~/_layouts/script/ui/jquery.ui.core.js"></script> 
<script type="text/javascript" src="~/_layouts/script/jquery.autocomplete.js"></script> 
<script type="text/javascript" src="~/_layouts/script/jquery.ui.datepicker.js"></script> 
<script type="text/javascript" src="~/_layouts/script/jquery-currency.js"></script> 
<script type="text/javascript" src="~/_layouts/script/jquery.numeric.js"></script> 
<script type="text/javascript" src="~/_layouts/script/moment.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     $(".watermarkDate").each(function() { 
      $txt = $(this).datepicker({ 
       showOn: "button", 
       buttonImage: "_layouts/EAR/images/Calendar.png", 
       buttonImageOnly: true, 
       dateFormat: "dd-MM-yy", 
       showButtonPanel: true, 
       onClose: function (e) { 
        var ev = window.event; 
        if (ev.srcElement.innerHTML == 'Clear') 
         this.value = "Select a date from calendar button only"; 
       }, 
       closeText: "Clear", 
       buttonText: "" 
      }); 
      $txt.addClass("watermarkDate"); 
      CalculateDay(); 
     }); 
     $(".watermarkDate").focus(function() { 
      $txt = $(this).datepicker({ 
       showOn: "button", 
       buttonImage: "_layouts/EAR/images/Calendar.png", 
       buttonImageOnly: true, 
       dateFormat: "dd-MM-yy", 
       showButtonPanel: true, 
       onClose: function (e) { 
        var ev = window.event; 
        if (ev.srcElement.innerHTML == 'Clear') 
         this.value = "Select a date from calendar button only"; 
       }, 
       closeText: "Clear", 
       buttonText: "" 
      }); 
      $txt.addClass("watermarkDate"); 
      CalculateDay(); 
     }); 
     $(".watermarkDate").blur(function() { 
      $txt = $(this).datepicker({ 
       showOn: "button", 
       buttonImage: "_layouts/EAR/images/Calendar.png", 
       buttonImageOnly: true, 
       dateFormat: "dd-MM-yy", 
       showButtonPanel: true, 
       onClose: function (e) { 
        var ev = window.event; 
        if (ev.srcElement.innerHTML == 'Clear') 
         this.value = "Select a date from calendar button only"; 
       }, 
       closeText: "Clear", 
       buttonText: "" 
      }); 
      $txt.addClass("watermarkDate"); 
      CalculateDay(); 
     }); 
    }); 
</script> 
<script type="text/javascript"> 
    $(function() { 
     $(".watermarkText").each(function() { 
      $txt = $(this); 
      if ($txt.val() != this.title) { 
       $txt.removeClass("watermark"); 
      } 
     }); 
     $(".watermarkText").focus(function() { 
      $txt = $(this); 
      if ($txt.val() == this.title) { 
       $txt.val(""); 
       $txt.removeClass("watermark"); 
      } 
     }); 
     $(".watermarkText").blur(function() { 
      $txt = $(this); 
      if ($.trim($txt.val()) == "") { 
       $txt.val(this.title); 
       $txt.addClass("watermark"); 
      } 
     }); 
    }); 
</script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".numeric").numeric(false, function() { 
      alert("Integers only"); 
      this.value = "0 month"; 
      this.focus(); 
     }); 
    }); 
</script> 
<script type="text/javascript"> 
    $(document).ready(function CalculateDay() { 
     var m, n, d, e, f, months, dtCurrDate, dtCurrDate_unixtime, ctlHORevDate, ctlCasLineExpDate, ctlMonthOverDue, newHORevDate, newCasLineExpDate, newMonthOverDue, newHORevDate_unixtime, newCasLineExpDate_unixtime, newMonthOverDue_unixtime, diffCountDayHORevDate, diffCasLineExpDate, diffCountDayMonthOverDue; 
     var months = new Array(12); 
     months[0] = "January"; 
     months[1] = "February"; 
     months[2] = "March"; 
     months[3] = "April"; 
     months[4] = "May"; 
     months[5] = "June"; 
     months[6] = "July"; 
     months[7] = "August"; 
     months[8] = "September"; 
     months[9] = "October"; 
     months[10] = "November"; 
     months[11] = "December"; 

     ctlHORevDate = document.getElementById('<%= txtHORevDate.ClientID %>').value; 
     ctlCasLineExpDate = document.getElementById('<%= txtCasLineExpDate.ClientID %>').value; 

     if (ctlCasLineExpDate != "Select a date from calendar button only") { 
      ctlCasLineExpDate = ctlCasLineExpDate.split('-'); 
      var i = 0; 
      while (i <= 12) { 
       if (ctlCasLineExpDate[1] == months[i]) 
        ctlCasLineExpDate[1] = i + 1; 
       i++; 
      } 

      f = moment(new Date(ctlCasLineExpDate[2], ctlCasLineExpDate[1] - 1, ctlCasLineExpDate[0])).subtract('months', 4).format("DD-MMMM-YYYY"); 

      document.getElementById('<%= txt4MontBefExpDate.ClientID %>').value = f;//Get date 4 month before Cash Line Expiry Date 
     } 

     if (ctlHORevDate != "Select a date from calendar button only") { 
      ctlHORevDate = ctlHORevDate.split('-'); 
      var i = 0; 
      while (i <= 12) { 
       if (ctlHORevDate[1] == months[i]) 
        ctlHORevDate[1] = i + 1; 
       i++; 
      } 

      newHORevDate = ctlHORevDate[2] + "-" + ctlHORevDate[1] + "-" + ctlHORevDate[0]; 
      newHORevDate = newHORevDate.split('-'); 

      d = new Date(newHORevDate[0], (newHORevDate[1] - 1), newHORevDate[2]); 
      e = moment().format('YYYY-MM-DD'); 
      e = e.split('-'); 
      e = new Date(e[0], (e[1] - 1), e[2]); 

      m = d.getMonth(); 
      n = e.getMonth(); 

      months = (e.getMonth() + 1) - d.getMonth() + (12 * (e.getFullYear() - d.getFullYear())); 

      document.getElementById('<%= txtMonthOverDue.ClientID %>').value = months + " month";//Get month overdue 
     } 
    }); 
</script> 
<script type="text/javascript"> 
    $(document).ready(function ICRESDateEnabler() { 
     var ddl = document.getElementById('<%= ddlHORating.ClientID %>'); 
     var ddlID = ddl.selectedIndex; 
     alert("Selected Index is : " + ddl.selectedIndex + "\nAnd it's really : " + ddlID + "\nAfter convert to int is : " + parseInt(ddlID));//Testing 
     if (parseInt(ddlID) <= 26) { 
      document.getElementById('<%= txtICRESRevDate.ClientID %>').className = "watermarkText"; 
      alert("It's working, ICRES rating is below 13E & class is : \n" + document.getElementById('<%= txtICRESRevDate.ClientID %>').className);//Testing 
     } 
     else { 
      document.getElementById('<%= txtICRESRevDate.ClientID %>').className = "watermarkDate"; 
      alert("It's working!, ICRES rating is 13E above & class is : \n" + document.getElementById('<%= txtICRESRevDate.ClientID %>').className);//Testing 
     } 
    }); 
</script> 
</head> 
<body> 
<table ID="tblBody" class="body"> 
    <tr ID="tr04" class="trRow"> 
     <td class="tdSplitter"> 
        </td> 
     <td class="tdLabel">Business Centre</td> 
     <td class="tdControl"> 
      <asp:DropDownList ID="ddlBusinessCentre" runat="server" CssClass="ctlControl" /> 
     </td> 
     <td class="tdSplitter"> 
        </td> 
     <td class="tdLabel">Rating</td> 
     <td class="tdControl"> 
      <asp:DropDownList ID="ddlHORating" runat="server" AutoPostBack="true" CssClass="ctlControl" /> 
     </td> 
     <td class="tdSplitter"> 
        </td> 
    </tr> 
    <tr ID="tr05" class="trRow"> 
     <td class="tdSplitter"> 
        </td> 
     <td class="tdLabel">Zone</td> 
     <td class="tdControl"> 
      <asp:DropDownList ID="ddlZone" runat="server" CssClass="ctlControl"> 
       <asp:ListItem Enabled="true" Text="Please select..." Selected="True" /> 
       <asp:ListItem Enabled="true" Value="0" Text="Zone 1" /> 
       <asp:ListItem Enabled="true" Value="1" Text="Zone 2" /> 
       <asp:ListItem Enabled="true" Value="2" Text="Zone 3" /> 
      </asp:DropDownList> 
     </td> 
     <td class="tdSplitter"> 
        </td> 
     <td class="tdLabel">ICRES 13A Or Worse (New Review Date)</td> 
     <td class="tdControl"> 
      <asp:TextBox ID="txtICRESRevDate" runat="server" CssClass="watermarkText" Text="Select a date from calendar button only" Tooltip="Select a date from calendar button only" /> 
     </td> 
     <td class="tdSplitter"> 
     </td> 
    </tr> 
</table> 

这里是我的代码背后,也修剪只有这样一个问题:

protected void Page_Load(object sender, EventArgs e) 
{ 
    SetAttribute(); 
} 

protected void Page_Init() 
{ 
    LoadRatingList(); 
} 

public void LoadRatingList() 
{ 
    try 
    { 
     using (SPSite spSite = SPContext.Current.Site) 
     { 
      using (SPWeb spWeb = spSite.OpenWeb()) 
      { 
       SPList spListOpen = spWeb.Lists["Rating"]; 

       SPQuery spQuery = new SPQuery(); 

       spQuery.Query = "<Where><Eq><FieldRef Name='Activator' /><Value Type='Boolean'>1</Value></Eq></Where>"; 
       SPListItemCollection spItemCollection = spListOpen.GetItems(spQuery); 

       if (!spItemCollection.Count.Equals(0)) 
       { 
        ddlHORating.Items.Add("Please select..."); 
        ddlHORating.SelectedItem.Attributes.CssStyle.Add("color", "Red"); 
        int i = 0; 
        foreach (SPListItem spItem in spItemCollection) 
        { 
         string statAct = spItem["Activator"].ToString(); 
         string statVal = spItem["Title"].ToString(); 

         if (statAct.Equals("True")) 
         { 
          ddlHORating.Visible = true; 
          ddlHORating.Items.Add(spItem["Title"].ToString()); 
          i++; 
          ddlHORating.SelectedValue = null; 
         } 
        } 
       } 
       else 
       { 
        ddlHORating.BackColor = System.Drawing.Color.Red; 
        Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('Data not available in Rating dropdown list!');", true); 
       } 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('Error at populate Rating value : " + ex.Message + "');", true); 
    } 
} 

public void SetAttribute() 
{ 
    ddlHORating.Attributes.Add("onchange", "JavaScript: ICRESDateEnabler();"); 

} 
} 

对不起它可能从现在才有点不同,仅仅只增加了一些测试。谢谢你的帮助。这里是什么样子:

Interface of my program

+0

函数没有理由在'$(document).ready'块中。 – jbabey

+0

我确实尝试了你的建议,但没有什么不同,有什么想法? – mutanic

+0

alert(“Selected Index is:”+ ddl.selectedIndex);'? – jbabey

回答

0

我想我接近我正在寻找现在。 我做了一些变化&现在我可以得到自动日期选择器弹出! 见下面我的更新脚本:*以后需要调整的日期格式有点 “DD-MMMM-YYYY”

<script type="text/javascript"> 
    $(document).ready(function ICRESDateEnabler() { 
     var ddl = document.getElementById('<%= ddlHORating.ClientID %>'); 
     var ddlID = ddl.selectedIndex; 
     alert("Selected Index is : " + ddl.selectedIndex + "\nAnd it's really : " + ddlID + "\nAfter convert to int is : " + parseInt(ddlID)); 
     if (parseInt(ddlID) <= 26) { 
      document.getElementById('<%= txtICRESRevDate.ClientID %>').className = "watermarkText"; 
      alert("It's working, ICRES rating is below 13E & class is : \n" + document.getElementById('<%= txtICRESRevDate.ClientID %>').className);//Testing 
      $(document.getElementById('<%= txtICRESRevDate.ClientID %>')).value = "Select a date from calendar button only"; 
     } 
     else { 
      document.getElementById('<%= txtICRESRevDate.ClientID %>').className = "watermarkDate"; 
      alert("It's working!, ICRES rating is 13E above & class is : \n" + document.getElementById('<%= txtICRESRevDate.ClientID %>').className);//Testing 
      $(document.getElementById('<%= txtICRESRevDate.ClientID %>')).datepicker().datepicker("show"); 
     } 
    }); 
</script> 
下面

见图片:

picture of success

***谢谢很多stackoverflow &所有成员!