2011-02-16 71 views
0

在我的jsp中,我已經動態地添加了基於其id的附加自動完成事件(jQuery)的字段。我在這裏遇到的問題是在所有動態添加的字段中輸入一個觸發自動完成的字段。我已經檢查過所有的ID並且它們是獨一無二的。這隻發生在IE中,而不是FF中。IE8中的JQuery自動完成問題

任何人都可以幫助我解決這個問題。

回答

0
function addSPNAC() 
{ 
    var counter = $('#spnRowCounter').val(); 
    if($('#spnId' + counter).elementExists()) 
    { 
     $('#spnId' + counter).autocomplete("security-ac.action?onlySpn=true", { 
      formatItem : function(row, i, max) { 
      return "<table class='ac-table' border='0' cellpadding='1' cellspacing='0' style='width:100%;table-layout:fixed;'><colgroup><col width='20%' /><col width='50%' /><col width='30%' /></colgroup>" + 
      "<tr><td>" + row[1] + "</td><td>" + row[0] + "</td><td class='aln-rt'>" + row[3] + "</td></tr></table>"; 
      }, 
      formatResult : function (row) { 
       return row[1]; 
      }, 
      scroll : true, 
      multiple : false, 
      minChars : 3, 
      width : 383, 
      highlight: function(value, term) { 
       if ($(value).find("td").size() === 0) { 
        return value; 
       } 
       return $.Autocompleter.defaults.highlight(value, term); 
      }, 
      resultsClass : "ac_results search_ac" 
     }); 
     alert('added SPN AC for ' + '#spnId' + counter); 
    } 
} 

當我添加一個新字段時,將會調用上面的方法。以下是動態生成一行的代碼。

function insertRow(eleToClone) 
{ 
    var counter = $('#' + eleToClone + 'Counter').val(); 
    counter++; 
    $('#' + eleToClone + 'Counter').val(counter); 
    var newFields = document.getElementById(eleToClone).cloneNode(true); 
    newFields.id = $('#' + eleToClone).id + '' + counter; 
    var newField = newFields.childNodes; 
    for (var i = 0; i < newField.length; i++) { 
     updateIds(newField[i], counter); 
    } 
    var insertHere = document.getElementById(eleToClone); 
    insertHere.parentNode.insertBefore(newFields,insertHere); 
    newFields.style.display = 'block'; 
    return; 
} 

function updateId(element, counter) 
{ 
    if(element.childNodes && element.childNodes.length > 0) 
    { 
     for (var j = 0; j < element.childNodes.length; j++) { 
      updateId(element.childNodes[j], counter) 
     } 
    }  
    var theId = element.id; 
    if(theId) { 
     element.id = theId + '' + counter; 
     element.name = theId + '' + counter; 
    } 

}