Quanto segue funziona bene la prima volta che seleziono "Aggiungi nuovo" e aggiungo una nuova opzione. La seconda volta (per un elemento diverso distinto dalla classe) aggiunge la nuova opzione all'elemento selezionato e al primo. Entrambi gli elementi sono tenuti ad aggiungere di nuovo.Perché jQuery ajax pubblica due volte qui?
<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>
La cosa strana è che sembra passare attraverso l'ajax un post due volte. Suppongo che stia trovando tutti i valori "addnew" (ce ne sono 2 finora, ce ne saranno altri). Come faccio a trattare solo l'elemento con la classe designata? Spero che questo abbia un senso.
Ogni volta che si fa clic su un'opzione #upload_form [value = "AddNew"], si aggiunge un nuovo gestore di clic al # l'aggiunta del nuovo invio. Clicca 5 volte sul primo, ora un clic sul secondo si innesca 5 volte! – Robert
@Robert: Come annullare questo al licenziamento del modale? Cioè se l'opzione #upload_form [value = "addnew"] viene cliccata e quindi la modal viene chiusa facendo clic su di essa? – MysticalTautologist