jquery自动完成输入数组

时间:2010-02-16 15:46:56

标签: jquery autocomplete

我有以下代码,我想要做的是设置一个自动填充输入框,填写完成后,在其下面创建另一个自动填充输入框。

  • 我的代码存在问题 因为我使用模糊,它会创建 每次点击时都会输入一个新输入 第一个。

  • 第二个问题是 我需要设置自动完成功能 在新创建的输入框上,但是 如果我递归地做,那么它会 崩溃。

代码:

function setupAutoComplete()
{
 var autoCompleteData = $("#listContacts").html().split("<br>");
 //autoCompleteData = replaceAll(autoCompleteData, "&lt;", "<");
 //autoCompleteData = replaceAll(autoCompleteData, "&gt;", ">");
 $("[name|=toemail[]]").autocomplete(autoCompleteData);
 $("[name|=toemail[]]").result(function(event, item) {
    $("[name|=toemail[]]").blur();
 });
 $("[name|=toemail[]]").blur(function(){
  var newString = $(this).val();
  newString = replaceAll(newString, "&lt;", "<");
  newString = replaceAll(newString, "&gt;", ">"); 
  $(this).val(newString);
  var newfield = '<p><label class="" disabled="true"><select name="toSelect[]"><option>To: </option><option>CC: </option><option>BCC: </option></select></label><input type="text" value="" name="toemail[]" /></p>';
  $("#composeTo").append(newfield);
 });
}

2 个答案:

答案 0 :(得分:1)

不是将元素的自动完成设置为一个组,而是应该在创建每个元素时单独进行。这将停止递归。

其次,为了避免在点击屏幕上的其他位置时触发onb​​lur事件,您应该抓住按键上按下的Tab键。

答案 1 :(得分:0)

发布我自己的解决方案。

function setupAutoComplete()
{
    var autoCompleteData = $("#listContacts").html().split("<br>");


$("[name|=toemail[]]").each(function(key, value) {
    if (!($(this).hasClass("blurred")))
    {
    $(this).autocomplete(autoCompleteData);
    $(this).result(function(event, item) {
        var newString = $(this).val();
        newString = replaceAll(newString, "&lt;", "<");
        newString = replaceAll(newString, "&gt;", ">"); 
        $(this).val(newString);
        $(this).blur();
    });
    $(this).blur(function(){
        if (!($(this).hasClass("blurred")))
        {
        var newfield = '<p><label class="" disabled="true"><select name="toSelect[]"><option>To: </option><option>CC: </option><option>BCC: </option></select></label><input type="text" value="" name="toemail[]" /></p>';
        $("#composeTo").append(newfield);
        setupAutoComplete();
        $(this).addClass("blurred");
        }
    });
    }
});