如何检测jQuery UI自动完成字段是否已从列表中更改?

时间:2014-04-28 21:34:16

标签: javascript jquery jquery-ui autocomplete

我有一个带有jquery自动完成功能的简单输入文本。我有一些可选择的项目,当自动完成设置“pid”命名字段时,我选择了一个。在此之后,我手动更改项目的名称。这将是一个新的,我需要保存到数据库中。我能以某种方式检测输入文本字段是否已更改?

我想设置清空名为“pid”的域名。

这是我的HTML代码:

<input type="text" name="pid" id="pid">
<input type="text" name="name" id="name">

这是jQuery代码:

$('#name')).autocomplete({
    source: function(request, response) {
         $.ajax({
              url:myurl,
              data:mydata,
              type:'get',
              success: function(data) {
                  response(data.mydat);
              },
              error: function(e,f,g) {
              }
         });
    },
    minLength: 1,
    select: function(event, ui) {
        $('#pid').val( ui.item.id );
        $('#name').val( ui.item.name );
    }
});

那么我能否以某种方式检测#name是否已更改,而不是来自自动完成列表?

1 个答案:

答案 0 :(得分:0)

以下是jsfiddle中添加的代码。如果名称已更改且不等于自动完成设置的名称,它将提醒更新数据库。

以下示例代码:

    var source  = [ ];
    var mapping = { };
    var trackName;    
    for(var i = 0; i <compName .length; ++i) {
        source.push(compName [i].id);
        mapping[compName[i].id] = compName[i].value;
    }    
    $("#compID").autocomplete({
        source: source,
        minLength: 1,
        select: function(event, ui) {   $("#compName").val(mapping[ui.item.value]); 
         trackName = mapping[ui.item.value];
        } 
    });    
    $("#compName").change(function() {
     if($("#compName").val() != trackName)
     {
      alert('Name is changed, Fire ajax and update DB');
     }
    });