After some struggle, I got upto the following code for my problem. However it still does not add selected to a chosen option. You can find my original question below. Improved code, but it still does not work.
var $index = $('.drop').index(this)
// find drop index...
var $indexofmonth = $index + 1;
//alert($indexofmonth); // this works
var $indeximg = event.dragTarget.title;
var $indeximgnum = $indeximg.replace(/[a-zA-Z]/g,"");
//alert($indeximgnum); // this gives only number 1,2,3,4 etc. Use this in option:eq(2)
var $featurenumber = "Feature" + $indexofmonth;
//alert($featurenumber); //this works
var $eqnum = 'option:eq('+$indeximgnum + ')';
//alert($eqnum); //working
//and set up like this $('select[name=Feature1] option:eq(3)').attr('selected', 'selected' );
// find the drop select
$sel = $("select[name='"+ $featurenumber +"']");
//the above html() give an array
$('$sel $eqnum').attr('selected', 'selected' );
//alert ('$sel $eqnum'); //this does not work
+++++++++++++++++++++++++++++
This is my original question.
I have the following HTML and jQuery. The HTML is an output from CMS.
I used drag and drop from http://threedubmedia.com/demo/drop/ because they are total 6k. jQuery UI core itself is more than 100k.
I want to drop a single image to a month. there are more than 20 images and of course there are twelve months. For this purpose I used drag and drop.
I used only four images and four months for my demo purpose.
I sorted out how to drag and drop part. But I am stuck how to create a function so that it will select a right image from a right month.
For example if I drop a dolphin image in a January, I want to select dolphin in January select option.
I think this is what I need to do but not 100% sure.
Overall: title of dropped area must be equal to FeatureValue of select, for example januar is FeatureValue1
step 1: find the index number 1,2,3 .. of a dropped area/month and assign it as var monthindex
step 2: then add var index to FeatureValue var featurenumber
step 3: if tis is the same as FeatureValue(index number) in select do the following
step 4: find the title of dropped image var = droppedimg
step 5:add :selected to a select option value if droppedimg = the title of dropped img, droppedimg
I appriciate your help. Thanks in advance.
HTML
<div id="calendarimg">
<div id="status"></div>
<div id="calendartable">
<div id="jan" class="drop" Title="januar" > </div>
<div id="feb" class="drop" Title="febrar" > </div>
<div id="mar" class="drop" Title="mars" > </div>
<div id="apr" class="drop" Title="april"> </div>
<div id="mai" class="drop" Title="mai"> </div>
<div id="jun" class="drop" Title="juni"> </div>
<div id="jul" class="drop" Title="juli"> </div>
<div id="aug" class="drop" Title="august"> </div>
<div id="sep" class="drop" Title="september"> </div>
<div id="oct" class="drop" Title="october"> </div>
<div id="nov" class="drop" Title="november"> </div>
<div id="dec" class="drop" Title="december"> </div>
</div>
<div id="nodrop">
<div class="drag" title="Angel" id="angel1"></div>
<div class="drag" title="Dolphin" id="dolphin2"></div>
<div class="drag" title="Fantail" id="fantail3"></div>
<div class="drag" title="Hawk" id="hawk4"></div>
</div>
<!-- End of printimgs -->
</div>
<div id="featureright2">
<form method="post" action="http://www.mywebsite.com/shopaddtocart.asp">
<table cellspacing="1" cellpadding="2" border="0"><tr><td class="al">
<p class="al"><strong>januar</strong></p>
<select size="3" name="FeatureValue1">
<option value="" selected="selected">velg</option>
<option value="97">Angel</option>
<option value="98">Dolphin</option>
<option value="99">Fantail</option>
<option value="89">Hawk</option>
</select>
<input type="hidden" name="Feature1" value="88">
<p class="al"><strong>februar</strong></p>
<select size="3" name="FeatureValue2">
<option value="" selected="selected">velg</option>
<option value="109">Angel</option>
<option value="110">Dolphin</option>
<option value="111">Fantail</option>
<option value="101">Hawk</option>
</select>
<input type="hidden" name="Feature2" value="100">
<p class="al"><strong>mars</strong></p>
<select size="3" name="FeatureValue3">
<option value="" selected="selected">velg</option>
<option value="112">Angel</option>
<option value="121">Dolphin</option>
<option value="122">Fantail</option>
<option value="123">Hawk</option>
</select>
<input type="hidden" name="Feature3" value="120">
<p class="al"><strong>april</strong></p>
<select size="3" name="FeatureValue4">
<option value="" selected="selected">velg</option>
<option value="124">Angel</option>
<option value="133">Dolphin</option>
<option value="134">Fantail</option>
<option value="135">Hawk</option>
</select>
<input type="hidden" name="Feature4" value="132">
</td></tr><tr><td class="ac">
<input class="txtfield" type="text" size="2" maxlength="3" name="quantity" value="1" />
</td><td class="ac vm"><input class="imgbtn" src="images/vpnav_buy_norw.gif" type="image"></td></tr>
<input type="hidden" name="productid" value="81" />
</table></form>
</div>
jQuery
$(".drag")
.bind( "dragstart", function( event ){
// ref the "dragged" element, make a copy
var $drag = $( this ), $proxy = $drag.clone();
// modify the "dragged" source element
$drag.addClass("outline");
// insert and return the "proxy" element
return $proxy.appendTo( document.body ).addClass("ghost");
})
.bind( "drag", function( event ){
// update the "proxy" element position
$( event.dragProxy ).css({
left: event.offsetX,
top: event.offsetY
});
})
.bind( "dragend", function( event ){
// remove the "proxy" element
$( event.dragProxy ).fadeOut( "normal", function(){
$( this ).remove();
});
// if there is no drop AND the target was previously dropped
if ( !event.dropTarget && $(this).parent().is(".drop") ){
// output details of the action
$('#status').empty().append('<div>Removed <b>'+ this.title +'</b> from <b>'+ this.parentNode.title +'</b></div>');
// put it in it's original div...
$('#nodrop').append( this );
}
// restore to a normal state
$( this ).removeClass("outline");
});
$(".drop")
.bind( "dropstart", function( event ){
// don't drop in itself
if ( this == event.dragTarget.parentNode ) return false;
// activate the "drop" target element
$( this ).addClass("active");
})
.bind( "drop", function( event ){
// if there was a drop, move some data...
$( this ).append( event.dragTarget );
// output details of the action...
$('#status').empty().append('<div>Dropped <b>'+ event.dragTarget.title +'</b> into <b>'+ this.title +'</b></div>');
})
.bind( "dropend", function( event ){
// deactivate the "drop" target element
$( this ).removeClass("active");
});