限制可选项目的数量jquery-ui

时间:2016-04-28 19:30:03

标签: javascript jquery jquery-ui

正如标题所说,我试图限制某个列表中可选项的数量,但搜索我发现我必须将此行添加到我的代码中的SO并没有做到这一点:

if ($(".ui-selected, .ui-selecting").length > 4) {
   $(ui.selecting).removeClass("ui-selecting");
 }

我的代码确实与他们的代码略有不同,所以也许我实现它错了,但下面是我的(工作)代码。所以我试图在这里努力的是,一旦var total 达到某个值(例如5),就应该禁用所有可选项。当达到5的值时,不应再选择任何项目,但仍然可以取消选择。 JSFiddle:https://jsfiddle.net/ut1pgxcg/

使用Javascript:

$( "#selectable" ).bind( "mousedown", function ( e ) {
    e.metaKey = true;
    } ).selectable({
        filter: "li:not(.taken)",
      stop: function() {
        var result = [];
        $( ".ui-selected", this ).each(function() {
                result.push($(this).data('price'));
        });

        var sum = result.length;

          $( "#select-result" ).html(sum);

        var total = 0;
        $.each(result,function() {
            total += this;
        });

         $( "#price-result" ).html(total);                  
      }
    });

HTML:

<span>You selected:</span> <span id="select-result">0</span> slots, costing you +- $<span id="price-result">0</span>

<ol id="selectable">
<li class="raffle-slot" data-price="2">1</li>
<li class="raffle-slot taken" data-price="2">2</li>
<li class="raffle-slot" data-price="2">3</li>
</ol>

1 个答案:

答案 0 :(得分:2)

好像你的代码可以简化一下。见https://jsfiddle.net/u9z8t74u/

currentElement.Id = loadedAlias.Id;
currentElement = loadedAlias; // this seems pointless
dbContext.Entry(loadedAlias).State = EntityState.Unchanged;

全局变量可以在闭包中被吸收,但这是一个快速而肮脏的解决方案,采用更简单的方法,IMO。