如何在自动完成文本区域的Jquery函数中将变量指定为Id

时间:2015-04-02 04:39:30

标签: javascript jquery asp.net

我有一个文本区域,调用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

中无效

任何人都知道任何解决方案?请回答。

3 个答案:

答案 0 :(得分:1)

您可以选择元素类型并从事件中获取ID

在此处查看演示JS Fiddle

&#13;
&#13;
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;
&#13;
&#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");