Question

Basically what I'm trying to do is update the value attribute of a hidden input field contained within the selected element when the selectable() UI stops running.

If the element is selected, then the input's value should be the name attribute of that particular LI, whereas if the element is not selected, the value should be updated as empty.

HTML Sample:

<ul id="selector">
    <li class="networkicon shr-digg" name="shr-digg">
        <div></div>
        <label>Digg</label>
        <input type="hidden" value="" name="bookmark[]" />
    </li>
    <li class="networkicon shr-reddit" name="shr-reddit">
        <div></div>
        <label>Reddit</label>
        <input type="hidden" value="" name="bookmark[]" />
    </li>
    <li class="networkicon shr-newsvine" name="shr-newsvine">
        <div></div>
        <label>Newsvine</label>
        <input type="hidden" value="" name="bookmark[]" />
    </li>
</ul>

Script Sample:

$(function() {
    $("#selector").selectable({ 
        filter: 'li',
        selected: function(event, ui) {
            $(".ui-selected").each(function() {
                $(this).children('input').val($(this).attr('name'));
            });
        },
        unselected: function(event, ui) {
            $(".ui-selected").each(function() {
                $(this).children('input').val('');
            });
        }
    });
});
Was it helpful?

Solution

$(this).children('input').attr("value", $(this).attr('name'));
...
$(this).children('input').attr("value", '');

Does that solve it ?

http://api.jquery.com/val/:

Description: Get the current value of the first element in the set of matched elements.

OTHER TIPS

Your .each syntax is incorrect, you seem to be mixing up the syntax with $.each. It should be:

$(".ui-selected").each(function() {
    $(this).children('input').val($(this).attr('name'));
});
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top