作業中の Web サイトの「出席者の選択」リストで作業しようとしていますが、行き詰まるところまで来ました。
現時点でできることは、ドロップダウン リストからオプションを選択することです。これにより、名前が表示され、入力フィールドにこれらの値が入力されます (後でこれらの値をデータベースにポストするために使用します)。
私が抱えている問題は、リストから名前を削除するときに、フィールド値からも削除されないことです。
基本的に、名前の1つを削除すると、その値がフォームから取り除かれvalue
、追加さ;
れたものも削除されます。
HTML
<select name="attendees" class="attendees">
<option value="" disabled="disabled" selected="selected">Please Select Attendees</option>
<option value="12" class="12">Name 1</option>
<option value="13" class="13">Name 2</option>
<option value="14" class="14">Name 3</option>
</select>
<div class="attendeesList" style="width: 370px;">
<input type="text" name="theAttendees" class="theAttendees" value="" style="width: 370px;" />
</div>
jQuery
(function($) {
$('.attendees').change(
function() {
var theSelect = $('.attendees option:selected');
getName = theSelect.text();
getClass = theSelect.val();
theAttendees = $('input.theAttendees').val();
if (theSelect.hasClass('noMore')) {
$('span.'+ getClass).animate({"color":"red"}, 100);
setTimeout(function() {$('span.'+ getClass).animate({"color":"#000"}, 500)}, 1000) ;
} else {
$('.attendeesList').append('<span class="'+ getClass +'">' + getName + '<a href="#" id="d" class="'+getClass+'"><img src="images/iconDelete.png" style="float:right"></a></span><br class="'+ getClass +'"/>');
theSelect.addClass('noMore');
$('input.theAttendees').val(theAttendees + ' ' + getName + ';');
}
});
}(jQuery));
(function($) {
$('div.attendeesList').on('click', 'a#d', function() {
var hrefSpan = $(this).parent();
classID = $(this).attr('class');
getName = $('.attendees option.'+ classID).text();
hrefSpan.remove();
$('br.'+ classID).remove();
if ($('.attendees option.'+ classID).hasClass('noMore')) {
$('.attendees option.'+ classID).removeClass('noMore');
}
});
}(jQuery));
これはおそらく最も読みやすいコードではなく、おそらく可能な限り優れたコードではないことを理解していますが、私はjQueryを学習しており、可能な限り使用しようとしています。これは機能的であるため、改善に取り組むことができます.一度それが動作します。私のコードを最適化できる場所を教えていただけると幸いです。
ありがとう!