我有一个文本区域,调用jQuery函数自动完成字段。 但是我的textArea Ids是动态创建的,当我点击文本区域时我必须传递这些ID。
但是jQuery函数中的变量在这里不起作用是我的代码
function SearchText(id) {
var TxtboxId ="";
TxtboxId = "#IdPrefix_" + id;
$(TxtboxId).autocomplete({
source: function(request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "demo.aspx/GetAutoCompletfunc",
data:'{"key":"' + request.term +'"}',
dataType: "json",
async: false,
success: function(data) {
response(data.d);
},
error: function(result) {
alert("Error");
}
});
}
});
}
通过文本区域onclick事件调用此功能。此代码将添加到循环中,以动态创建文本区域。这里调用SearchText函数。
ListArr[++j] = '<td width="20%" ><textarea id="IdPrefix_' + id + '" type="textbox" onclick = "javascript:SearchText( ' + id + ' );" maxlength="300"
但它在$(TxtboxId).autocomplete
任何人都知道任何解决方案?请回答。
答案 0 :(得分:1)
您可以选择元素类型并从事件中获取ID
在此处查看演示JS Fiddle
var sourceStub = [
{label: "bat", value: "batman"},
{label: "cat", value: "catwomen"},
{label: "rat", value: "mighty mouse"},
{label: "dog", value: "lassie"}
];
$("textarea").keyup(function(e) {
$("#" + e.target.id).autocomplete({
source: sourceStub
});
});
&#13;
<table>
<tr><td width="20%" >
<textarea id="IdPrefix_1" type="textbox"></textarea>
</td></tr>
<tr><td width="20%" >
<textarea id="IdPrefix_2" type="textbox"></textarea>
</td></tr>
</table>
&#13;
或者如果你有textareas你不想参加自动完成乐趣,你可以创建一个类
.autoCompleteMe {}
并将该类添加到要在
上运行自动完成的每个元素<textarea class="autoCompleteMe" id="IdPrefix_1" type="textbox"></textarea>
然后选择该课程
$(".autoCompleteMe").keyup(...);
答案 1 :(得分:1)
TxtboxId只需要拆分,也就是说它不能隐式添加'#' 用它
TxtboxId = "IdPrefix_" + id;
$("#" + TxtboxId).autocomplete({
-------------});
答案 2 :(得分:0)
最好我们可以在文本框中添加属性
像以下方式一样。将class属性设置为“ckeditor”并执行以下操作 var TxtboxId = $(this).find('.ckeditor').attr("id");