Jörn Zaefferer의 jquery autocomplete 플러그인을 사용하고 있는데 자동 완성 필드를 복제 할 때 어떻게 작동시키는 지 알 수 없습니다. 복제 된 자동 완성 필드는 텍스트를 입력 할 때 선택 항목을 표시하지만 항목을 선택할 수는 없다는 점에서 거의 효과가 있습니다. 처음에는 브라우저 호환성 문제라고 생각했지만 FF3과 Safari에서 모두 발생하므로 놓친 잡기가있는 것 같습니다. 여기 JQuery : 자동 완성 필드를 복제하는 방법은 무엇입니까?
내가 뭘하는지의 작업 예입니다<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Autocomplete Clone Demo</title>
<style>
body {
margin: 40px;
}
.hide_element {
display: none;
}
</style>
<link rel="stylesheet" href="http://dev.jquery.com/view/trunk/plugins/autocomplete/jquery.autocomplete.css" type="text/css" />
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/autocomplete/jquery.autocomplete.js"></script>
<script type="text/javascript">
function setAutocomplete()
{
var users = [
{ name: "Fred", id: "1" },
{ name: "Barney", id: "2" },
{ name: "Wilma", id: "3" }
];
$(".user_selector").autocomplete(users,
{
mustMatch: true,
matchContains: true,
minChars: 2,
formatResult: function(row) { return row.name; },
formatItem: function(row, i, max) { return row.name; }
}
);
}
var current= 0;
var addParticipantFields = function()
{
current++;
$newParticipant = $("#template").clone(true);
$newParticipant.removeAttr("id");
$newParticipant.removeClass("hide_element");
$prefix = "extra" + current;
$newParticipant.children("div").children(":input").each(function(i) {
var $currentElem= $(this);
$currentElem.attr("name",$prefix+$currentElem.attr("name"));
});
$newParticipant.appendTo("#participantsField");
setAutocomplete();
}
$(document).ready(function() {
setAutocomplete();
$("#addParticipant").live("click", addParticipantFields);
});
</script>
</head>
<body>
<h1>Test Autocomplete Cloning</h1>
<form id="demo" method="post" action="">
<fieldset id="participantsField">
<label>Participants</label>
<div class="participant">
<input class="user_selector" name="user" size="30"/>
</div>
</fieldset>
<!-- This is the template for adding extra participants -->
<div class="participant hide_element" id="template">
<input class="user_selector" name="_user" size="30"/>
</div>
<p><input type="button" id="addParticipant" value="Add Another Participant"></p>
<p><input class="button" type="submit" value="Submit"/></p>
</form>
</body>
</html>
이유는 확실하지 않지만 실제로 작동합니다. 이전에 설명한 것과 동일한 문제가있는 자동 완성 동작이 발생했지만이 수정을 수행 한 후 복제되지 않은 입력 상자에서 발생했습니다. 그러나 지금은 복제 할 수 없어서 이벤트가 때때로 엉망이 될 것 같습니다. – Rob
같은 문제가 있었지만 이벤트 처리기로 clone()을 수행해야했지만 그 해결 방법은 unautocomplete() 및 autocomplete()를 사용하여 clone()을 수행 한 후 모든 요소에 대한 모든 이벤트 핸들러를 다시 검색하는 것보다 훨씬 쉽습니다. – CountZero