You are duplicating the content when you create your shadowbox, so you have two copies of the dropdown. val()
returns the value of the first element, which in this case is not the one in the shadowbox.
Try this:
In your code that sets up the shadowbox:
var thisContent = $('<div class="shadowbox-color-form"></div>').append($('.color-form').html())[0].outerHTML;
In the code that handles the click:
$('body').on('click', '.shadowbox-color-form .button', function(e) {
e.preventDefault();
var colorurl = $('.shadowbox-color-form .colorurl').val();
alert(colorurl);
});