Die folgenden Funktionen funktionieren, wenn ich zum ersten Mal "Add New" wähle und eine neue Option hinzufüge. Beim zweiten Mal (für ein anderes Element, das durch die Klasse unterschieden wird), fügt es dem ausgewählten Element und dem ersten Element die neue Option hinzu. Beide Elemente müssen neu hinzukommen.Warum schreibt jQuery ajax hier zweimal?
<script type="text/javascript">
$('#upload_form option[value="addnew"]').click(function(){
// Show modal window
$('#add-new').modal('show');
// Get the class
var Classofentry = $(this).attr("class");
$('#add-new-submit').on('click', function(){
// Get new option from text field
var value = $('#add-new-text').val();
console.log(value);
$.ajax({
type: "POST",
url: "<?php echo site_url(); ?>main/change_options",
data: {new_option: value, new_option_class: Classofentry},
dataType: "html",
error: errorHandler,
success: success
});
function success(data)
{
$('#'+Classofentry).append("<option value='" + data + "'selected=\"selected\">" + data + "</option>");
//alert(data);
//alert('Success!');
}
function errorHandler()
{
alert('Error with AJAX!');
}
$('#add-new').modal('toggle');
});
});
</script>
Die komische Sache ist, dass es scheint, zweimal durch den Ajax einen Pfosten zu durchlaufen. Ich nehme an, dass es alle "neuen" Werte gibt (es gibt bisher 2, es wird mehr geben). Wie bekomme ich es, das Element nur mit der angegebenen Klasse zu behandeln? Hoffe, das macht Sinn.
Jedes Mal, wenn Sie auf #upload_form Option auf [value = „addnew“], fügen Sie einen neuen Klick-Handler # Hinzufügen-Neu-Senden Klicken Sie 5 mal auf die erste, jetzt ein Klick auf die zweite wird 5 mal auslösen! – Robert
@Robert: Wie mache ich das bei der Abwahl des Modals rückgängig? I.e. Wenn die Option #upload_form [value = "addnew"] angeklickt wird, wird das Modal durch Anklicken beendet. – MysticalTautologist