2013-05-31 29 views
2

HTML輸入字段jQuery自動完成多個字段使用ID,但不使用類;使用serialize如果可能

<input type="text" name="partner_name_or_description[]" id="partner_name_or_description1" class="row_changed1"/> 
<input type="text" name="partner_name_or_description[]" id="partner_name_or_description2" class="row_changed2"/> 
<input type="text" name="partner_name_or_description[]" id="partner_name_or_description3" class="row_changed3"/> 

的jquery的自動完成代碼部分(即作品)

$("#partner_name_or_description1:input, #partner_name_or_description2:input, #partner_name_or_description3:input").autocomplete(
"__autocomplete_source.php", 

jQuery中有:partner_name_or_description1,2,3等....代替此1,2,3等長列表想用serialize(或以其他可能的方式)使用短小的內容。

起初得到這些1,2,3 ......與此代碼

$('[id^="partner_name_or_description"]').each(function (index, partner_name_or_description) { 
var s_id = partner_name_or_description.id.substring(27); 
}); 

然後取而代之的是一長串試圖讓這樣的事情

$("#partner_name_or_description" + s_id + " :input").serialize().autocomplete(

它不工作。如果查看源代碼,請參閱

$("#partner_name_or_description" + s_id + " :input").serialize().autocomplete(

不明白原因...可能被錯誤地使用serialize().autocomplete

或者可能不能使用serialize(),必須使用別的東西。

我不能使用class="row_changedX",因爲它對於其他目的是必需的(類必須像row_changed1,2,3;對於每一行類名稱必須不同)。

工作代碼

/*Actually do not understand why this is necessary, but if I delete all uncommented, then code does not work*/ 
function findValue(li) { 
/*if(li == null) return alert("No match!"); 
// if coming from an AJAX call, let's use the CityId as the value 
if(!!li.extra) var sValue = li.extra[0]; 
// otherwise, let's just display the value in the text box 
else var sValue = li.selectValue; 
alert("The value you selected was: " + sValue);*/ 
} 

function selectItem(li) { 
findValue(li); 
} 

function formatItem(row) { 
return row[0] + " (id: " + row[1] + ")"; 
} 

$('[id^="partner_name_or_description"]').autocomplete("__autocomplete_source.php", 
{ 
delay:10, 
minChars:2, 
matchSubset:1, 
matchContains:1, 
cacheLength:10, 
onItemSelect:selectItem, 
onFindValue:findValue, 
formatItem:formatItem, 
autoFill:true 
}//{ delay:10, 
)//.autocomplete(; 

回答

3

編輯:感謝@jk - 這將工作:

$('[id^="partner_name_or_description"]').autocomplete(
     "__autocomplete_source.php", 
     //do stuff 
}); 
+1

爲什麼不'$( '[ID^= 「partner_name_or_description」]')。 autocomplete(「__ autocomplete_source.php」,// ...這裏有更多的代碼));'each()'是否必要? –

+1

好點,我不相信它應該是,包括那在答案,thx! – tymeJV

+1

謝謝你jk。您的建議有效。我將粘貼整個代碼信息 – user2360838

相關問題