在我的jsp中,我动态添加了根据其id附加了自动完成事件(jquery)的字段。我在这里面临的问题是输入一个字段,在所有动态添加的字段中触发自动完成。我检查了所有的ID,它们是独一无二的。这种情况只发生在IE而不是FF中。
任何人都可以帮我解决这个问题。
答案 0 :(得分: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;
}
}