2014-01-29 94 views
0

一個js函數在HTML頁面調用從選擇選項

<form> 
      <select id="selectWork" onchange='getWorkLocation(this.value);' class="span6"> 
       <option value="All">Hepsi</option> 
       <option value="C">Ç</option> 
       <option value="E">E</option> 
       <option value="H">H</option> 
       <option value="K">K</option> 
       <option value="K">K</option> 
       <option value="M">M</option> 
       <option value="T">T</option> 
      </select> 
</form> 
<script type="text/javascript"> 
$(function() { 
    require(["webRequest"], function (webRequest) { 
function getWorkLocation(a) { 
      if (a == "Hepsi") { 
       getWorks(); 
      } 
      else { 
       webRequest.get("api/Work/GetWorkByType", { "type": a }, 
        self.getWorkLocationSucceeded); 
      } 
     } 

我想打電話給getWorkLocation功能,但我得到這個錯誤:getWorkLocation is undefined.什麼問題?

+0

你使用jQuery? – tymeJV

+0

hayırkardeşimkullanmıyorum:) – user2923864

回答

0

當你使用jQuery已經($(function() { ... })是jQuery的語法),你可以刪除onchange完全屬性,而使用:

$('form').on('change', '#selectWork', function() { 
    var text = $(this).text(); // "Hepsi" if A is selected 

    if (text === "Hepsi") 
     ... 
}); 

退房http://try.jquery.comhttp://learn.jquery.com如果你不熟悉的圖書館。

0

將getWorkLocation的定義移至全局範圍。

require(["webRequest"], function (webRequest) { 
    function getWorkLocation(a) { 
     if (a == "Hepsi") { 
      getWorks(); 
     } 
     else { 
      webRequest.get("api/Work/GetWorkByType", { "type": a }, 
       self.getWorkLocationSucceeded); 
     } 
    } 

    // make getWorkLocation publically available 
    window.getWorkLocation = getWorkLocation; 
}); 

由於它看起來像使用require.js,因此不需要在jQuery domready事件處理程序中定義函數。

不過,你在這裏有一個競賽條件。在require.js有機會下載腳本並執行回調之前,可以在選擇框上觸發onchange事件。

從詹姆斯·唐納利的答案借用,從選擇標籤刪除內聯onchange屬性和使用jQuery:

require(["webRequest"], function (webRequest) { 
    ... 
}); 

$(function() { 
    $(document).on('change', '#selectWork', function() { 
     getWorkLocation(this.value); 
    }); 
});