Как использовать значение динамического свойства в виджете jQuery
У меня есть JavaScript, который возвращает значение всякий раз, когда я выбираю вариант из выпадающего меню.
$(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") );
});
2 ответа
Решение
Переместите функцию в глобальную область:
function calculateVals() {
//code here...
return someResult;
}
$(document).ready(function() {
$("select").change(calculateVals);
calculateVals();
});
И даже лучше, узнайте, что означает готовый DOM, как вы его неправильно используете.
- У вас должен быть только один готовый обработчик.
- Должен быть только код, относящийся к элементам DOM.
Обновить:
Позже вы можете изменить максимум слайдера с помощью:
$( "#slider").slider("option", "max", calculateVals());
Попробуйте определить function
снаружи готовый блок:
function calculateVals() {
//code here...
return someResult;
}
$(document).ready(function() {
$("select").change(calculateVals);
calculateVals();
});