Ich habe eine Autocomplete, die den Wert #resource_id
auf select
Ereignis setzen wird. Wenn ein select
Ereignis eintritt, aber dann der Benutzer weiter bearbeitet #resourceFile
, möchte ich #resource_id
aus dem Posten entfernen (oder auf Null oder NULL setzen, damit der Server weiß). Das folgende Skript funktioniert nicht, da das Ereignis change
nach dem Ereignis select
auftritt, auch wenn #resourceFile
später nicht geändert wird.Wert nur bei jQueryUI AutoVervollständigen auswählen Ereignis
Wie kann dies erreicht werden?
$(".addResource").click(function() {$("#dialog-addResource").dialog("open");});
$("#dialog-addResource").dialog({
autoOpen: false, resizable:false, height: 200, width: 600, modal: true,
open: function() {
$('#resourceFile').val('');
$('#resource_id').val('');
},
buttons: [
{
text: 'Save',
click: function() {
var data=$(this).find($('#resource_id').val()?':input':':input:not(#resource_id)').serializeArray();
console.log(this,data)
$.post('/pages_back/display/addResource',data,function (rsp){
console.log(rsp);
},'json');
}
},
{
text: 'Cancel',
click : function() {$(this).dialog("close");}
}
]
});
$("#resourceFile").autocomplete({
source: "/pages_back/display/getResources",
minLength: 2,
select: function(event, ui) {
console.log('set');
$('#resource_id').val(ui.item.id);
},
change: function(event, ui) {
console.log('changed');
$('#resource_id').val(''); //Is it better to set to null or use removeAttr('value')?
}
});
.
<div id="dialog-addResource" title="Add Resource" style="display:none">
<span>Add Resource: </span>
<input type="text" id="resourceFile" name="file" />
<input type="hidden" id="resource_id" name="resource_id" />
<input type="hidden" name="page_id" value="{{ id }}" />
</div>
Mit „resource bearbeiten weiter“ meinen Sie setzt Zeichen aus dem Autovervollständigen-Feld, oder etwas anderes hinzuzufügen oder zu entfernen? – BobRodes
@BobRodes Genau wie du gesagt hast. – user1032531