This should work:

$.fn.moveOptions = function(to, which)
{
    this.copyOptions(to, which);
    if(which == "all")
    {
        this.find("option").remove().end();
    }
    else
    {
        this.find("[EMAIL PROTECTED]").remove().end();
    }
    return this;
}

On Jan 16, 11:03 pm, codecowboy <[EMAIL PROTECTED]> wrote:
> Hi Guys,
>
> I am trying to add a function to theTexoTelaselect box manipulation
> plug-in (http://www.texotela.co.uk/code/jquery/select/).  I am trying
> to add a function called moveOptions() that will function like a cut &
> paste from one text box to another.  There is already a function
> called copyOptions() that copies a selected value from one select box
> to another.  I copied the code from copyOptions() to my new function
> moveOptions() to modify.  I figure that the only change would be to
> remove the selected option from the 1st select box  after adding it to
> the 2nd select box.  The concept is simple but my code is yielded
> strange results.  The functionality breaks down when you try to copy
> multiple options at once.  I am relatively new to jquery so I'm hoping
> that it is something obvious.  Any help would be greatly appreciated.
> Thank you in advance.
>
> You can test out the code 
> here:http://www.digital-magic.biz/guy/cake_1_2_blog_tutorial/blog_wizard/f....
>
> Here is my function, I commented out all the different things that I
> have done in an attempt to make it work:
>
> /**
>  * Move options to another select (functions like cut and paste)
>  *
>  * @name     moveOptions
>  * @author   Sam Collett (http://www.texotela.co.uk)
>  * @type     jQuery
>  * @param    String to  Element to move to
>  * @param    String which  (optional) Specifies which options should
> be copied - 'all' or 'selected'. Default is 'selected'
>  * @example  $("#myselect").moveOptions("#myselect2"); // copy
> selected options from 'myselect' to 'myselect2'
>  * @example  $("#myselect").moveOptions("#myselect2","selected"); //
> same as above
>  * @example  $("#myselect").moveOptions("#myselect2","all"); // copy
> all options from 'myselect' to 'myselect2'
>  *
>  */
> $.fn.moveOptions = function(to, which)
> {
>         var w = which || "selected";
>         if($(to).size() == 0) return this;
>         this.each(
>                 function()
>                 {
>                         if(this.nodeName.toLowerCase() != "select") return 
> this;
>                         // get options
>                         var o = this.options;
>                         // get number of options
>                         var oL = o.length;
>                         for(var i = 0; i<oL; i++)
>                         {
>                 alert(o[i].value + " -- " + o[i].text + " -- " +
> o[i].selected);
>                                 if(w == "all" ||      (w == "selected" && 
> o[i].selected))
>                                 {
>                     //alert("1" + o[i].text + o[i].value);
>                     //alert(o.toString());
>                                         $(to).addOption(o[i].value, 
> o[i].text);
>                     $(this).removeOption(o[i].value);
>                     //$(this).remove(o[i].value);
>                     //this.remove(o[i].value);
>                     //alert("2" + o[i].text + o[i].value);
>                                 }
>                 //$(this).removeOption(o[i].value, true);
>                         }
>                 }
>         );
>         return this;
>
> };

Reply via email to