我有一个自动填充功能,可以在SomeClass
事件中设置#resource_id
的值。如果发生select
事件,但用户继续编辑select
,我希望删除#resourceFile
被发布(或设置为零或NULL,以便服务器知道)。
以下脚本不起作用,因为#resource_id
事件发生在change
事件后,即使select
以后未发生更改。
如何实现这一目标?
#resourceFile
$(".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')?
}
});
答案 0 :(得分:0)
不是一个非常优雅的解决方案,但以下方法可行:
$("#resourceFile").autocomplete({
source: "/pages_back/display/getResources",
minLength: 2,
select: function( event, ui ) {
console.log('set',ui);
$('#resources_id').val(ui.item.id).data('name',ui.item.value);
},
change: function( event, ui ) {
console.log('changed');
if($('#resources_id').data('name')!=$('#resourceFile').val()) {
$('#resources_id').val(''); //Is it better to set to null or use removeAttr('value')?
}
}
});