버튼 클릭시 jquery를 사용하여 동적으로 텍스트 상자를 생성합니다.자동 완성을위한 jquery를 사용하여 동적 컨트롤 등록
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<div id="lblCustName">
</div>
</td>
<td>
<div id="lblRemove">
</div>
</td>
</tr>
<tr>
<td colspan="2">
<input type="button" value="Add" id="AddRow" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Submit" id="SaveCustomers" />
</td>
</tr>
</table>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
//validate post form
$("#CustomersForm").validate({ ignore: ":not(:visible)" });
//Initialize the dynamic id
_DynId = 1;
//Click Event for Customers
$('#AddRow').click(function(e) {
$('#lblCustName').append('<div id="lblCustName' + _DynId + '" style="height:20px;padding-left:10px;">' + '<input type="text" name="CustName" id="CustName' + _DynId + '" class="required" value="" title="*" />');
$('#lblRemove').append('<div id="lblRemove' + _DynId + '" style="height:20px;padding-left:10px;">' + '<img src="../../Content/Images/delete_icon.gif" onclick=Remove("' + _DynId + '"); title="Remove" id="iRemove' + _DynId + '"></img>');
_DynId += 1;
});
</script>
고객을 위해 텍스트 상자를 동적으로 추가하려고합니다. 이것은 보고서 처리를 위해 고객을 추가하는 기능을위한 샘플 HTML입니다. 텍스트 상자에 자동 완성 옵션을 제공해야합니다.
나는 그것을 위해 아래의 스크립트를 사용하고 있습니다 :
$.getJSON("/User/GetAllCustomers/?t=" + new Date(), {},
function(data) {
if (data != null) {
$("input:text[name=CustName]").autocomplete(data, { mustMatch: false, matchContains: 4, max: 50,
formatItem: function(row) {
if (row.CustomerName!= "") {
return row.CustomerName;
}
},
formatResult: function(row) {
return row.CustomerName;
}
}).result(function(e, row) {
//do something
});
}
});
자동 완성이 동적으로 추가 된 컨트롤 작동하지 않습니다.
나는 자동 완성이 문제는 당신이 바인딩 할 때 그게 필드에 바인딩 자동 완성이다 동적으로 추가 된 컨트롤
만약 수천 명의 고객이 있다면 새로운 컨트롤을 추가 할 때마다 바인드하면 대답에 따라 새로운 컨트롤에 불필요하게 데이터베이스를 호출해야합니다. 그러면 응용 프로그램 측면에서 성능 문제가 발생할 수 있습니다. 데이터베이스 호출을 피할 수있는 아이디어. 사용자가 다른 고객 수를 가질 수 있으므로 캐싱도 사용할 수 없습니다. – Prasad
getJSON 호출의 결과를 전역 JavaScript 변수 (또는 깔끔하고 싶다면 네임 스페이스)에 저장하면 추가 된 각각에 대해 서버에 콜백 할 필요가 없으며 대신 기존 변수마다. 그것이 내 직책의 마지막 단락에서 언급 한 것입니다. 그런데도 출력 캐싱을 계속 사용할 수는 있지만 VaryBy 인수 (사용자 ID로 출력 캐시를 변경 한 다음 각 사용자의 정보가 별도로 캐시 됨)를 살펴 봐야하지만, 자바 스크립트를 만들 필요가 없으면 항상 빠릅니다 비록 그것이 db를 치지 않을 것이라 할지라도 왕복 여행. – fyjham