使用ajax进行保存时,选择自动完成列表不会完全保存单词

时间:2015-05-14 00:29:28

标签: javascript php jquery mysql ajax

我使用mysql查询构建了一个自动完成的城市列表。正确键入输入字段可启动搜索并构建可选择的城市列表。问题是城市名称没有被保存,只有在使用.on时键入的字符('更改' ...我尝试了其他鼠标事件,如鼠标悬停,鼠标移动,鼠标输出,鼠标中心,鼠标移动 - 并且他们要求用户首先从列表中选择项目,然后移出,然后再次在输入上滑动光标以实际触发所选城市名称的保存.html看起来像:

<input type="text" onmouseover="this.focus();" class="saveCity" name="pob_city" member_id="<?php echo $member_id; ?>" value="<?php echo $pob_city; ?>" placeholder="City" id="pob_city" />
<script language="javascript" type="text/javascript"> $("#pob_city").coolautosuggest({ url:"tools/autosuggest/query_cities.php?chars=" }); </script>

saveCityCountry javascript:

$(document).on('mouseout','.saveCity',function()
{
  var DATA=$(this).val();
  var n =remove_whitespaces(DATA);
  var MEMBER_ID=$(this).attr('member_id');
  $("#Results").html( "" );
  if(n  !=''){
  var dataString = 'pob_city='+ n +'&member_id='+MEMBER_ID;
    $.ajax({
      type: "POST",
      url: "saveData.php",
      data: dataString,
      cache: false,
      success: function(html)
      {
        $("#Results").html( html );
      }
    });
  }
})

您可以在http://dottedi.us/misc/ajaxsave/

看到演示

另一件令人讨厌的事情是,对于普通的输入字段,例如名字或姓氏,只有当你点击页面上的其他地方时才会触发on change事件,因此安慰剂&#34; Save&#34;按钮。

更新:我清理了我的示例中的代码,将国家/地区中的城市拆分,并将帖子更新为引用saveCity。这不会影响结果,只是更容易理解。

http://dottedi.us/misc/ajaxsave/tools/autosuggest/js/文件夹中有两个可能相关的javascript文件,jquery.coolautosuggest.js和jquery.coolfieldset.js。在jquery.coolautosuggest.js的第46行,我看到success:function(data){。您希望我放置&#34; source:data,autoFocus:true,delay:0,minLength:0,select:response,response:response &#34;在这里的某个地方?请用正确的语法,semicolin等清楚说明。

在您添加的代码块中,我假设我更改了HTML,添加了,响应,而功能响应只是放在我的saveData.js中。一旦这是正确的,我是否会返回更改而不是鼠标悬停或鼠标悬停?

1 个答案:

答案 0 :(得分:0)

在自动填充调用中包含响应功能,您可以在其中将所选值分配给隐藏字段,这样您就可以保留全文。

我假设您正在获取一系列城市,将每个城市存储在一个名为“城市”的键中的数组中并将其返回。

定义一个隐藏字段,说“selected_city”。

在coolautosuggest成功函数中放置此代码

来源:数据, autoFocus:true, 延迟:0, minLength:0, 选择:响应, 回应:回复

$("#pob_city").coolautosuggest({ url:"tools/autosuggest/query_cities.php?chars=" },response);

function response(){
   if (typeof ui.content != "undefined" && ui.content.length === 1) {
      city= ui.content[0].city;
   }
   else if (typeof ui.item != "undefined" && ui.item.label.length > 0) {
      city= ui.item.label;
   }
   if (label.length > 0 || index.length > 0) {
      $("#selected_city").val(city);
      // this value you can use to display
   }
}

在执行此操作之前,请在第120行更改jquery.coolautosuggest.js上的以下功能

if(me.submitOnSelect == true){$(“form”)。has(me.textField).submit(); }

如果(me.submitOnSelect == TRUE){ $( “#pob_city”)VAL($(本).find()文本() “suggestion_title。”); $( “形式”)有(me.textField).submit()。 }