3

私は次のコードを持っています

for(somecollection){
    <ol id="someId@(index)" class="selectableList">
       <li value="1">1</li>
       <li value="2">2</li>
       <li value="3">3</li>
    </ol>
}

IN javascript セクション:

$(".selectableList").selectable(
            {
                stop: function (event, ui) {
                    $(".ui-selected:first", this).each(function () {
                        $(this).siblings().removeClass("ui-selected");
                        var refreshVal = $(this).attr("value");
                        var cid = $(this).attr("id");
                        SetValue(@(Model.Id),refreshVal, cid);
                    });
                }
            }
        );

$("#positionCultureForm").on("submit", function () {
        if (!$(this).valid()) {
            return false;
        }
    });

フォームが送信されたときに、項目の少なくとも 1 つがui-selectedであるかどうかを確認するように、これの検証を設定する方法がわかりません。

編集済み:コレクション内の各アイテムに対して個別に検証する必要があります。

編集: カスタム検証:

jQuery.validator.messages.required = "";

    $.validator.addMethod("isOneSelected", function (value, element, arg) {
        return false;
    }, 'test');


    $("#someForm").validate();

    $("#someForm").on("submit", function () {
        if (!$(this).valid()) {
            return false;
        }
    });

Html で:

<ol id="someId@(index)" class="selectableList isOneSelected">
4

1 に答える 1

1

.selectable() を適用すると、ol は次のようになります。

<ol id="someId@(index)" class="selectableList ui-selectable">
<li class="ui-widget-content ui-selectee">Item 1</li>
<li class="ui-widget-content ui-selectee">Item 2</li>
<li class="ui-widget-content ui-selectee">Item 3</li>
<li class="ui-widget-content ui-selectee ui-selected">Item 4</li>
<li class="ui-widget-content ui-selectee">Item 5</li>
<li class="ui-widget-content ui-selectee">Item 6</li>
<li class="ui-widget-content ui-selectee">Item 7</li>
</ol>

そこから、クラス .ui-selected が表示されていることがわかります。選択されている数を調べるには、単純にセレクターを作成し、.length を使用して、返されるアイテムの数を取得します。

if($("#someId@(index) .ui-selected").length){} // if 1 or more are selected

それらのそれぞれに対して特に何かをする必要がある場合は、いつでもループできます。

$("#someId@(index) .ui-selected").each(function()
{
    // your validation
}

あなたのコードでは、このクラスを削除しているようです.fooでセレクターを.removeClass("ui-selected"); 簡単に作成できます$(this).addClass("foo")

于 2012-08-14T18:30:45.527 に答える