我尝试使用不同类型的输入创建拖放表单。选择,文本框和单选框工作正常,但是当拖动到可排序字段时,范围滑块不起作用。
我在这里创造了一个小提琴:
虽然硬编码的是有效的。我需要一个双滑块,否则HTML5范围输入会很棒。
任何帮助将不胜感激!
$(function () {
$(".slider-range").slider({
range: true,
min: 0,
max: 500,
values: [75, 300],
slide: function (event, ui) {
$(".amount").val("$" + ui.values[0] + " - $" + ui.values[1]);
}
});
$("#amount").val("$" + $("#slider-range").slider("values", 0) +
" - $" + $("#slider-range").slider("values", 1));
/* populate the list of fields into the div */
var fields = getFields();
$(fields).each(function (index, value) {
$("#listOfFields").append("<div class='fld' fieldtype='" + value.type + "'>" + value.label + "</div>");
});
$(".fld").draggable({
helper: "clone",
stack: "#containerTable div",
cursor: "move"
});
$(".droppedFields").droppable({
activeClass: "activeDroppable",
hoverClass: "hoverDroppable",
accept: ":not(.ui-sortable-helper)",
drop: function (event, ui) {
var fieldtype = $(ui.draggable).attr("fieldtype");
$("<div class='fld' fieldtype='" + fieldtype + "'></div>").html(ui.draggable.html()).appendTo(this);
}
});
$(".droppedFields").sortable();
$(".droppedFields").disableSelection();
答案 0 :(得分:2)
创建一个函数initSliders ()
并在构造您放下的对象时调用此函数。虽然这会导致多次初始化,但通常不会引起问题。
$(".droppedFields").droppable({
activeClass: "activeDroppable",
hoverClass: "hoverDroppable",
accept: ":not(.ui-sortable-helper)",
drop: function (event, ui) {
var fieldtype = $(ui.draggable).attr("fieldtype");
$("<div class='fld' fieldtype='" + fieldtype + "'></div>").html(ui.draggable.html()).appendTo(this);
// initSlider is called here after appending the code.
initSliders();
}
});
因此,每次初始化一个新滑块时,我都会假设它已初始化为预设值,因此它已初始化为全局定义的minValue
和maxValue
的值。为了确保所有滑块都改变了位置,我将$(".slider-range").slider("option", "values", [minValue, maxValue]);
添加到幻灯片功能中。
var minValue = 75;
var maxValue = 300;
function initSliders() {
$(".slider-range").slider({
range: true,
min: 0,
max: 500,
values: [minValue, maxValue],
slide: function (event, ui) {
minValue = ui.values[0];
maxValue = ui.values[1];
$(".amount").val("$" + minValue + " - $" + maxValue);
$(".slider-range").slider("option", "values", [minValue, maxValue]);
}
});
$(".amount").val("$" + minValue + " - $" + maxValue);
}
$(function () {
initSliders();
});
因为,我不确定您是否希望我添加一个有效的 fiddle 。