I have the following code that makes the
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 section:
$(".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;
}
});
I am not sure how to set up the Validation for this so that when the form is submited it checks to see if atleast one of the item is ui-selected.
Edited: I need the validation to be individual for each of items in the collection.
Edited: Custom Validation:
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;
}
});
In Html:
<ol id="someId@(index)" class="selectableList isOneSelected">
After applying .selectable() your ol will look similar to this one :
<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>
From there you can see the class .ui-selected appeared, to find out how many are selected, simply create a selector and use .length to get how many items it returns.
if($("#someId@(index) .ui-selected").length){} // if 1 or more are selected
If you need to do something in particular for each of them, you can always loop through it.
$("#someId@(index) .ui-selected").each(function()
{
// your validation
}
In your code you seem to be removing this class with .removeClass("ui-selected");
You can then simply $(this).addClass("foo") and make your selectors with .foo
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With