2015-10-07 54 views
0

我正在開發一個MVC c#項目。我是新來的jQuery和會喜歡它,如果你們能借一些想法,以什麼錯在這裏去..當條件成立時使用JQuery啓用Dropdownlist

我有兩個下拉列表:

  @Html.DropDownList("year", new SelectList(SomeModel.SomeHelper.SomeMethod()), "All", new {@class = "dropDown"}) 

      @Html.DropDownList("month", new SelectList(new[] 
      { 
       new {ID = "1", Name = "January"}, 
       new {ID = "2", Name = "February"}, 


      }, "ID", "Name"),"All", new {@class = "dropDown", @disabled = "disabled"}) 

注:大多數月份的目的

刪除

年份列表將始終啓用。但是,月份列表僅在從年份列表中選擇一個值時才能啓用。所以我寫了這個jQuery的正常工作:

$(document).ready(function() 
{ 
    var yearDropdown = $("#year"); 
    var monthDropdown = $("#month"); 

    yearDropdown.on('change', function (sender, arg) { 
     var newVal = $(this).val(); 
     monthDropdown.removeAttr('disabled', newVal !== 0); 
    }); 

}); 

不過,現在..當我不想被選擇的年份(我回到「所有」在今年的榜單中選擇),仍處於啓用狀態月份列表。

編輯:年份列表包含像「2010」,「2011」等數值。等等。當年份列表選擇「全部」時,我想禁用月份列表。選擇一年後,我希望啓用月份列表。

因此我寫了這個:

$(document).ready(function() { 
     var monthDropdown = $("#month"); 
     var yearDropdown = $("#year"); 

     yearDropdown.on('change', function (sender, arg) { 
      if ($(yearDropdown) == "All") { 
       $("#monthDropdown").prop("disabled", false); 
      } 
     }); 
    }); 

沒有工作..(這意味着什麼都沒有發生過),我不知道這是做它甚至以正確的方式。截至目前爲止:只有從年份列表中選擇月份列表。沒有更多..

任何指導? :)

UPDATE:

與所有那些誰評論的指導下,我成功地編寫終於研究出一個jQuery:現在

$(document).ready(function() { 
     var yearDropdown = $("#year"); 
     var monthDropdown = $("#month"); 

     yearDropdown.on('change', function() { 
      var newVal = $("#year").val(); 
      if (newVal === "") { 
       monthDropdown.prop('disabled', !this.selectedIndex); 
      } 
      else { 
       monthDropdown.prop('enabled', !this.selectedIndex); 
      } 
     }); 

    }); 

也對我有更好的理解的jQuery :)雖然我標記一個答案作爲答案,評論真的數過!

+0

'全部'是選項文本還是值?如果價值,'0'的目的是什麼?僅供參考,值不是數字,而是一個字符串,removeAttr()jq方法不接受布爾參數,並且jq對象總是在js中真實。這在代碼中會導致很多錯誤。在您的問題中發佈相關的HTML標記會使您的問題在幾秒鐘內得到解決...... –

+0

「所有」是默認值我在每個列表
@Html.DropDownList("year", new SelectList(SomeModel.SomeHelper.SomeMethod()), "All", new {@class = "dropDown"}) 我沒有爲它設置的值設置..因爲我還沒有完全確定它是如何工作。但我能夠從控制器中的這個列表中檢索值,當所有選擇我使用小於0來識別它。
另外..你是什麼意思相關的HTML標記? – Tsar

+0

Jquery是客戶端語言。它用於瀏覽器。您已經發布了服務器端代碼,您應該在瀏覽器呈現它時發佈相關的選定元素HTML標記。現在很容易理解什麼是從您的服務器端代碼的HTML呈現,但因爲我不是一個ASP人,這就要求我頭腦猛衝...... :) –

回答

1

隨着$(yearDropdown)你jQuery的元素(包裝DOM元素)。

使用$(yearDropdown).val()獲得實際值!

+0

嘗試用if($(yearDropdown).val ==「All」)和if($(yearDropdown).val <0)..沒有更改 – Tsar

+0

使用.val()no .val – Alberto

+0

標記爲答案,因爲您有=(「#年」)。val();部分權利一直:) – Tsar

1

而是使用.prop()

monthDropdown.prop('disabled', newVal != 0); 

,你必須檢查的值:

yearDropdown.on('change', function (sender, arg) { 
    if (yearDropdown.val() == "All") { // use `.val()` to check the value 
     $("#monthDropdown").prop("disabled", false); 
    } 
}); 

yearDropdown.on('change', function (sender, arg) { 
    $("#monthDropdown").prop("disabled", this.value == "All"); 
}); 
+0

它也沒有帶來任何變化.. – Tsar

+0

_when我不想要選擇年份(我回去選擇年份列表中的'全部'),月份列表仍然啓用._這是一個有點混亂 – Jai

+0

我想它應該是'newVal!==「0」 '或'newVal!= 0' –

相關問題