2014-09-23 72 views
0

我有一個UpdatePanel內一些div:爲什麼jQuery是沒有更新的隱藏字段

<asp:UpdatePanel runat="server" ID="upAddDays" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <div class="addDaysSection"> 
      <div class="leftdiv2">Task Name: </div> 
      <div class="rightdiv2" style="overflow: hidden;"> 
       <asp:Label ID="lblTName" runat="server" Text="" ClientIDMode="Static"></asp:Label> 
      </div> 
     </div> 
     <div class="addDaysSection"> 
      <div class="leftdiv2">Current Due Date: </div> 
      <div class="rightdiv2"> 
       <asp:Label ID="lblCurrDD" runat="server" Text="" ClientIDMode="Static"></asp:Label> 
      </div> 
     </div> 
     <div class="addDaysSection" style="padding: 10px 0 10px 0; height: 45px;"> 
      <div class="leftdiv2">Add Days to Extend: </div> 
      <div class="rightdiv2"> 
       <div style="float: left; text-align: right; padding-right: 5%; height: 100%;"> 
        <span style="display: inline-block; height: 100%; vertical-align: middle;"></span> 
        <img id="imgMinus" src="../theImages/addDaysMinus_OFF.png" style="vertical-align: middle; width: 35px; height: 35px; display: none;" /> 
       </div> 
       <div style="float: left; text-align: center;"> 
        <span style="display: inline-block; height: 100%; vertical-align: middle;"></span> 
        <input type="text" value="0" id="txtExtend" maxlength="3" placeholder="Number of Days" size="3" class="txtExtend" /> 
       </div> 
       <div style="float: left; text-align: left; padding-left: 5%; height: 100%;"> 
        <span style="display: inline-block; height: 100%; vertical-align: middle;"></span> 
        <img id="imgPlus" src="../theImages/addDaysPlus_OFF.png" style="vertical-align: middle; width: 35px; height: 35px;" /> 
       </div> 
      </div> 
     </div> 
     <div class="addDaysSection"> 
      <div class="leftdiv2">New Due Date: </div> 
      <div class="rightdiv2"> 
       <asp:Label ID="lblNewDD" runat="server" Text="" ClientIDMode="Static"></asp:Label> 
      </div> 
     </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 

而且隱藏字段其他地方的頁面上,在UpdatePanel之外:

<input type="hidden" id="newDD" name="newDD" runat="server" /> 

的JavaScript:

$("body").on('click', "#imgPlus", function (e) { 
    //alert("plus"); 
    var vDays = $("#txtExtend").val(); 
    $("#txtExtend").val(parseInt(vDays) + 1); 
    vDays = $("#txtExtend").val(); 
    if (vDays > 0) { 
     $("#imgMinus").show(); 
    } 
    else { 
     $("#imgMinus").hide(); 
    } 
    var date = new Date($("#lblCurrDD").text()); 
    var days = parseInt($("#txtExtend").val(), 10); 

    if (!isNaN(date.getTime())) { 
     date.setDate(date.getDate() + days); 

     $("#lblNewDD").text(date.toInputFormat()); 
     alert($("#lblNewDD").text()); //displays: date 
     $("#newDD").val($("#lblNewDD").text()); 
     alert($("#newDD").val()); //displays: undefined 
    } 
    else { 
     alert("Invalid Date"); 
    } 
}); 

$("body").on('click', "#imgMinus", function (e) { 
    //alert("minus"); 
    var vDays = $("#txtExtend").val(); 
    if (vDays > 0) { 
     $("#txtExtend").val(parseInt(vDays) - 1); 
    } 
    var vDays = $("#txtExtend").val(); 
    if (vDays <= 0) { 
     $("#imgMinus").hide(); 
    } 
    else { 
     $("#imgMinus").show(); 
    } 
    var date = new Date($("#lblCurrDD").text()); 
    var days = parseInt($("#txtExtend").val(), 10); 

    if (!isNaN(date.getTime())) { 
     date.setDate(date.getDate() - days); 

     $("#lblNewDD").text(date.toInputFormat()); 
     alert($("#lblNewDD").text()); //displays: date 
     $("#newDD").val($("#lblNewDD").text()); 
     alert($("#newDD").val()); //displays: undefined 
    } 
    else { 
     alert("Invalid Date"); 
    } 
}); 

爲什麼沒有隱藏的價值與日期,並顯示undefined,而不是更新?

+0

你有沒有的輸出所以我們可以在jsfiddle中測試這個。無論如何,你有沒有嘗試過document.ready或window.load? – VRC 2014-09-23 16:03:25

+0

我能從下面的答案中找出答案:)謝謝。 – SearchForKnowledge 2014-09-23 16:15:07

回答

4

因爲當你設置一個元素爲runat="server",ASP.NET改變其ID,SOU你必須通過.ClientID屬性引用元素生成的ID:

$("#<%=newDD.ClientID %>").val() 
+3

或者您可以將隱藏字段上的ClientIdMode設置爲靜態,這將保留您的設置ID – box86rowh 2014-09-23 16:05:08

+0

工作。我忽略了它。謝謝。 – SearchForKnowledge 2014-09-23 16:13:04