2013-10-09 72 views
0

我有4個下拉菜單 - 從和爲月份選擇;從和到爲年選擇。在我的javascript函數中,我需要顯示一個提醒,以防在兩個下拉列表中選擇From month大於同一年的月份。 (2013年7月至2013年4月,這在邏輯上不正確)。在JavaScript中獲取下拉值

以下是我的代碼。

var pStartMonth = $('#<%= cboMonth1.ClientID %>').val(); 
var pStartYear = $('#<%= cboYear1.ClientID%>').val(); 
var pEndMonth = $('#<%= cboMonth2.ClientID%>').val(); 
var pEndYear = $('#<%= cboYear2.ClientID%>').val(); 

if ((pStartMonth > pEndMonth) && (pStartYear == pEndYear)) { 
    arguments.IsValid = true; 
    alert("Preferred Start Month should be lesser than Preferred End Month"); 
} 

我的問題是,(說我選擇7月2013 - 2013年4月),直到執行涉及到IF迴路的pStartMonth值7和pEndMonth爲4。目前它越過這條線,From和To Momths都有價值7.問題在哪裏?

編輯

我的HTML代碼。

<asp:DropDownList ID="cboMonth1" runat="server" AutoPostBack="true" onclick="javascript:shouldsubmit=false;" ValidationGroup="vTimeSlot"> 
           <asp:ListItem Value="0">-Select-</asp:ListItem> 
           <asp:ListItem Value="1">January</asp:ListItem> 
           <asp:ListItem Value="2">February</asp:ListItem> 
           <asp:ListItem Value="3">March</asp:ListItem> 
           <asp:ListItem Value="4">April</asp:ListItem> 
           <asp:ListItem Value="5">May</asp:ListItem> 
           <asp:ListItem Value="6">June</asp:ListItem> 
           <asp:ListItem Value="7">July</asp:ListItem> 
           <asp:ListItem Value="8">August</asp:ListItem> 
           <asp:ListItem Value="9">September</asp:ListItem> 
           <asp:ListItem Value="10">October</asp:ListItem> 
           <asp:ListItem Value="11">November</asp:ListItem> 
           <asp:ListItem Value="12">December</asp:ListItem> 
          </asp:DropDownList> 
          <font color="red">*</font> 
          <asp:RequiredFieldValidator ID="cboMonth1_RequiredFieldValidator" runat="server" 
           ErrorMessage="Start Month Required" ForeColor="Red" Font-Size="0.9em" ControlToValidate="cboMonth1" ValidationGroup="vTimeSlot" Display="None"></asp:RequiredFieldValidator> 

          <asp:DropDownList ID="cboYear1" runat="server" AutoPostBack="true" onclick="javascript:shouldsubmit=false;"> 
           <asp:ListItem Value="0">-Select-</asp:ListItem> 
           <asp:ListItem Value="2013">2013</asp:ListItem> 
           <asp:ListItem Value="2014">2014</asp:ListItem> 
           <asp:ListItem Value="2015">2015</asp:ListItem> 
           <asp:ListItem Value="2016">2016</asp:ListItem> 
           <asp:ListItem Value="2017">2017</asp:ListItem> 
           <asp:ListItem Value="2018">2018</asp:ListItem> 
           <asp:ListItem Value="2019">2019</asp:ListItem> 
           <asp:ListItem Value="2020">2020</asp:ListItem> 
           <asp:ListItem Value="2021">2021</asp:ListItem> 
           <asp:ListItem Value="2022">2022</asp:ListItem> 
           <asp:ListItem Value="2023">2023</asp:ListItem> 
           <asp:ListItem Value="2024">2024</asp:ListItem> 
          </asp:DropDownList> 
          <font color="red">*</font> 
          <asp:RequiredFieldValidator ID="cboYear1_RequiredFieldValidator" runat="server" 
           ErrorMessage="Start Year Required" ForeColor="Red" Font-Size="0.9em" ControlToValidate="cboYear1" ValidationGroup="vTimeSlot" Display="None"></asp:RequiredFieldValidator> 

<asp:DropDownList ID="cboMonth2" runat="server" AutoPostBack="true"  onclick="javascript:shouldsubmit=false;"> 
           <asp:ListItem Value="0">-Select-</asp:ListItem> 
           <asp:ListItem Value="1">January</asp:ListItem> 
           <asp:ListItem Value="2">February</asp:ListItem> 
           <asp:ListItem Value="3">March</asp:ListItem> 
           <asp:ListItem Value="4">April</asp:ListItem> 
           <asp:ListItem Value="5">May</asp:ListItem> 
           <asp:ListItem Value="6">June</asp:ListItem> 
           <asp:ListItem Value="7">July</asp:ListItem> 
           <asp:ListItem Value="8">August</asp:ListItem> 
           <asp:ListItem Value="9">September</asp:ListItem> 
           <asp:ListItem Value="10">October</asp:ListItem> 
           <asp:ListItem Value="11">November</asp:ListItem> 
           <asp:ListItem Value="12">December</asp:ListItem> 
          </asp:DropDownList> 
          <font color="red">*</font> 
          <asp:RequiredFieldValidator ID="cboMonth2_RequiredFieldValidator" runat="server" 
           ErrorMessage="End Month Required" ForeColor="Red" Font-Size="0.9em" ControlToValidate="cboMonth2" ValidationGroup="vTimeSlot" Display="None"></asp:RequiredFieldValidator> 

          <asp:DropDownList ID="cboYear2" runat="server" AutoPostBack="true" ValidationGroup="vTimeSlot" > 
           <asp:ListItem Value="0">-Select-</asp:ListItem> 
           <asp:ListItem Value="2013">2013</asp:ListItem> 
           <asp:ListItem Value="2014">2014</asp:ListItem> 
           <asp:ListItem Value="2015">2015</asp:ListItem> 
           <asp:ListItem Value="2016">2016</asp:ListItem> 
           <asp:ListItem Value="2017">2017</asp:ListItem> 
           <asp:ListItem Value="2018">2018</asp:ListItem> 
           <asp:ListItem Value="2019">2019</asp:ListItem> 
           <asp:ListItem Value="2020">2020</asp:ListItem> 
           <asp:ListItem Value="2021">2021</asp:ListItem> 
           <asp:ListItem Value="2022">2022</asp:ListItem> 
           <asp:ListItem Value="2023">2023</asp:ListItem> 
           <asp:ListItem Value="2024">2024</asp:ListItem> 
          </asp:DropDownList> 
+0

你可以在jsfiddle上提供你的HTML標記和/或演示嗎? –

+0

@IrvinDomininaka愛德華,pl檢查我編輯的問題。 – MusicLovingIndianGirl

+0

@Aishvarya,其實Irvin正在請求示例html代碼!請提供html代碼或jsfiddle。 –

回答

0

這是我會怎麼處理這個問題:

// Your variable assignments 
var pStartMonth = $('#<%= cboMonth1.ClientID %>').val(), 
    pStartYear = $('#<%= cboYear1.ClientID%>').val(), 
    pEndMonth = $('#<%= cboMonth2.ClientID%>').val(), 
    pEndYear = $('#<%= cboYear2.ClientID%>').val(); 

// Strongly typed date objects initialised to epoch 
var startDate = new Date(0), 
    endDate = new Date(0); 

// Set the individual components that we have to play with 
startDate.setFullYear(pStartYear); 
startDate.setMonth(pStartMonth); 
endDate.setFullYear(pEndYear); 
endDate.setMonth(pEndMonth); 

// Do the comparison using the date objects 
if (startDate > endDate) { 
    // Handle invalid case 
} 

希望這有助於!