2012-03-21 438 views
2

我有一個MVC3 Razor應用程序,我試圖在下拉列表中執行簡單的JavaScript更改。MVC 3剃刀下拉更改簡單的Javascript

我的觀點使用定製輔助其返回取決於數據類型(下拉列表用於枚舉列表,對於二進制無線電按鈕等)

以下輔助正確的對象:

@Html.RecipeEditorFor(model => model.Coating_Mode) 

這使得在HTML以下選擇列表的:

<div class="form-line"> 
    <div class="editor-field"> 
     <select id="Coating_Mode" name="Coating_Mode"> 
      <option value="1">Adhesive</option> 
      <option selected="selected" value="2">SR</option> 
      <option value="3">Inspection</option> 
     </select> 
    </div> 
</div> 

我想有一個簡單的JavaScript執行,只要選擇列表中的值改爲:

<script type="text/javascript"> 
    $('#Coating_Mode').change(function() { 
     alert("hello"); 
    }); 
</script> 

我會很樂意提供需要幫助回答這個問題的任何其他代碼...

謝謝!

+2

請問你的腳本的DOM後運行加載? – 2012-03-21 15:35:42

+0

http://jsfiddle.net/HVMKU/你能指出你的問題多一點嗎?你提供的代碼工作得很好,或者我誤解了一些重要的東西。 – QQping 2012-03-21 15:36:51

+0

你錯過了$(document).ready(function()' – Romias 2012-03-21 15:51:41

回答

1

嘗試改變腳本:

<script type="text/javascript"> 
    $(function() { 
     $('#Coating_Mode').change(function() { 
      alert("hello"); 
     }); 
    }); 
</script> 

另外,我建議不要,如果你打算在一個HTML輔助使用這種在選擇使用的ID。如果有多個項目需要,請使用類選擇器。

+0

對不起,花了這麼長時間才找到你,但是這個工作!如果我有能力把它標記爲一個水管我會。 – user988148 2012-03-29 15:06:11

+0

@ user988148否憂慮:-)你應該能夠點擊左邊的勾號來接受它作爲答案? – magritte 2012-03-29 16:35:04

+0

我沒有15的聲望......不知道到底需要什麼 - 猜這個菜鳥需要給你的專家一些答案。 – user988148 2012-03-29 20:26:55

0

聽起來好像你的腳本是在DOM完成加載之前運行的 - 也就是說,腳本放在了你的助手之前。

將任何javascript事件封裝在document ready event中是一種很好的做法。然後腳本可以放在任何地方(儘管在</body>之前的頭部或右邊是最合適的)。

所以,你的腳本改成這樣,它應該工作:

<script type="text/javascript"> 
    // This function won't fire until the DOM is completely loaded. 
    $(document).ready(function() { 

     $('#Coating_Mode').change(function() { 
      alert("hello"); 
     }); 

    }); 
</script>