0

У меня возникла проблема, когда мне нужно включить функцию datepicker в asp: textbox после того, как я изменяю свой выбор asp: dropdownlist по определенному индексу.Невозможно изменить CssClass после изменения индекса dropdownlist

Это мой жерех: DropDownList управления, где я сделал присвоить значение из кода за программно:

<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> 

я сделал повторно установите функцию javascript на мой asp: dropdownlist control по моему коду:

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

Этот элемент управления asp: textboxt, который должен получить функцию datepicker, включен на нем, как только я выберу элемент в своем раскрывающемся списке, в настоящее время функция datepicker будет включена только через 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> 

Мой сценарий будет продолжать работать & оперативное предупреждение„не удалось“, независимо от того, что выбор. Предположим, что значок datepicker находится справа от моего asp: textbox, но это не так.

Может ли кто-нибудь указать мне правильное направление для достижения этого?

ОБНОВЛЕНО:

мне удалось изменить имя класса для жереха: текстовое поле в настоящее время путем изменения ddlID в ParseInt (dllID), но до сих пор не удалось получить значок Datepicker видимую

ОБНОВЛЕНО: 18-января-2013 ~ Добавление реальный код (относящийся только)

ОК, ребята, вот код, который я уже подрезать только этот вопрос, надеюсь, что вы можете получить, чтобы проверить на нем:

.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

Что отображается из предупреждения («Selected Index is:» + ddl.selectedIndex); '? – jbabey

ответ

0

Я думаю, что близко к тому, что я ищу сейчас. Я сделал некоторые изменения & теперь я могу получить datepicker автоматически всплывающее окно! Смотрите мой обновленный скрипт ниже: * нужно настроить немного на формат даты позже "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 & все участники!

Смежные вопросы