2012-06-14 76 views
1

我有一個javascript,它會在我從下拉菜單中選擇一個選項時返回一個值。如何在jQuery小部件中使用動態屬性值

$(document).ready(function() { 
     function calculateVals() { 
      //dropdown menus  
      var valuestart = $("select[name='timestart']").val(); 
      var valuestop = $("select[name='timestop']").val(); 

      //create date format   
      var timeStart = new Date("01/01/2007 " + valuestart).getHours(); 
      var timeEnd = new Date("01/01/2007 " + valuestop).getHours(); 

      var hourDiff = timeEnd - timeStart;       

      return hourDiff; 

     } 
     $("select").change(calculateVals); 
     calculateVals(); 
    }); 

上面的腳本返回一個數字,我需要添加到一個jQuery插件下方。我需要將它添加到max選項,但我得到錯誤calculateVal is not defined

$(function(){ 
    $("#slider").slider({ 
     range: "min", 
     value: 8, 
     min: 1, 
     max: calculateVals(), //my attempt 
     step: 1, 
     slide: function(event, ui) { 
      $("#amount").text(ui.value); 
     }, 
     stop: function(event, ui) { 
      $("#notifications").val(ui.value); 
     } 
    }); 
    $("#notifications").val($("#slider").slider("value")); 
}); 
+1

尼斯頭像.... – gdoron

+0

@gdoron感謝我沒有看到壽哈哈 – CyberJunkie

回答

2

移動功能,以在全球範圍內:

function calculateVals() {  
    //code here... 
    return someResult;           
} 

$(document).ready(function() { 
     $("select").change(calculateVals); 
    calculateVals(); 
}); 

更妙的是,學什麼呢DOM準備好手段,因爲你濫用它。

  • 你應該只有一個準備處理程序。
  • 只有與DOM元素相關的代碼應該在那裏。

更新:

以後可以用更改滑塊最大:

$("#slider").slider("option", "max", calculateVals()); 
+0

謝謝!一些額外的代碼會使這種動態?當我點擊我的下拉菜單並選擇一個選項沒有任何反應。 – CyberJunkie

+0

@Cyber​​Junkie。我的感覺是你的問題在這裏//代碼在這裏......'')'無論如何我不知道你稱之爲動態的,也不知道當前的問題到底是什麼。 – gdoron

+0

你是對的!我將缺少的代碼添加到答案中。它計算我從2個下拉菜單中選擇的兩次之間的小時差並返回結果。結果我試圖添加到'max'選項中的jquery函數,它改變了一個滑塊。該函數僅在我加載頁面 – CyberJunkie

2

嘗試定義function出方準備塊:

function calculateVals() { 

      //code here... 

      return someResult;           
} 



$(document).ready(function() { 
    $("select").change(calculateVals); 
    calculateVals(); 
}); 
+0

感謝我試着。我沒有收到錯誤,但是當我點擊選擇菜單時沒有任何反應。 'someResult'應該返回一個數字,這會在變化時發生。 – CyberJunkie

相關問題