可选限制停止

时间:2012-06-13 13:54:14

标签: javascript jquery jquery-ui

我正在尝试使此可选脚本具有选择限制。我希望它在选择限制超过限制数4时停止选择。

http://jsfiddle.net/dw6Hf/51/

$(function() {
    $(".selectable").selectable({
        filter: "td.cs",

        stop: function() {
            var result = $("#select-result").empty();
            var result2 = $("#result2");
            $('.ui-selecting:gt(31)').removeClass("ui-selecting");

        //    alert($(".ui-selected").length);
            $('#divmsg').html($(".ui-selected").length*2+ " box selected")
            if ($(".ui-selected").length > 4) {
                //alert("Selection of only 4 allowed");
                $('#divmsg').html($('#divmsg').html() + ", Selection of only 4 allowed");
                $(".ui-selected").each(function(i, e) {                  
                    if (i > 3) {

                        $(this).removeClass("ui-selected");
                    }
                });
                return;
            }

            $(".ui-selected", this).each(function() {
                var cabbage = this.id + ', ';
                result.append(cabbage);
            });

            var newInputResult = $('#select-result').text();
            newInputResult = newInputResult.substring(0, newInputResult.length - 1);
            result2.val(newInputResult);
        }
    });
});​

谢谢

2 个答案:

答案 0 :(得分:0)

好了,现在我理解了这个要求应该给你的要求。从停止更改为可选择意味着您可以在“选择”之前做出决定,而不是在停止之后。

fiddle

答案 1 :(得分:0)

这有效

$( "#selectable" ).selectable({
    selecting: function(event, ui) {
         if ($(".ui-selected, .ui-selecting").length > 4) {
           $(ui.selecting).removeClass("ui-selecting");
         }
    }       
});

this

的副本

修改 这样的事情?

$(function() {
    $(".selectable").selectable({
        filter: "td.cs",

        // do not allow selecting more than four items
        selecting: function(event, ui) {
             if ($(".ui-selected, .ui-selecting").length > 4) {
               $(ui.selecting).removeClass("ui-selecting");
             }
        }               

        // do whatever you like with the selected
        stop: function() {
            var result = $("#select-result").empty();
            var result2 = $("#result2");            

            $('#divmsg').html($(".ui-selected").length*2+ " box selected")

            $(".ui-selected", this).each(function() {
                var cabbage = this.id + ', ';
                result.append(cabbage);
            });

            var newInputResult = $('#select-result').text();
            newInputResult = newInputResult.substring(0, newInputResult.length - 1);
            result2.val(newInputResult);
        }
    });
});?