Jquery ui jqueryaddrow和autocomplete

Jquery ui jqueryaddrow和autocomplete,jquery-ui,jquery,jquery-ui-autocomplete,Jquery Ui,Jquery,Jquery Ui Autocomplete,我有一个表,我想在列上使用自动完成。 medSearch是为此列设置的类 我使用Jquery的自动完成代码 autocomp_opt={ source: function(request,response){ var myTable = []; var searchStr = $(".medSearch").val(); if (searchStr.length>2) {

我有一个表,我想在列上使用自动完成。 medSearch是为此列设置的类

我使用Jquery的自动完成代码

autocomp_opt={
    source: function(request,response){
        var myTable = [];        
        var searchStr = $(".medSearch").val();

        if (searchStr.length>2)
        {        
            alert(searchStr);                    
            var soapEnv = "... searchStr.....";

            $.ajax(
            {            
                .............
然后我使用CloudGen的AddRowJavaScript

$(document).ready(function(){

    $(".addRow").btnAddRow(function(row){row.find(".medSearch").autocomplete(autocomp_opt)});
    $(".delRow").btnDelRow();
    $(".medSearch").autocomplete(autocomp_opt); //end autocomplete

}); //end document. ready
但是,自动完成不能正确处理新添加的行的列

自动完成查询不接受用户在此新行列中的输入

它总是将第一行的列内容作为输入

我认为这是因为jQuery总是获取第一个类为“.medSearch”的项。然后它不接受当前行的用户输入

我不知道怎么修理它

提前感谢您的帮助

我的进一步问题: 事实上,这是我进一步的问题,评论太长了

我还有两列带有类标识符medCode和medDin,它们需要由自动完成结果填充:

                    success: function(xml){

                    //alert($(xml).text());
                    //traverse the xml
                    var xmlItem = $(xml).find("*").eq(0);

                    //alert($(xmlItem)[0].nodeName);

                    var xmlMedItemArr = $(xmlItem).children().children().children();

                    //alert("Phyiscian Items: "+$(xmlPhyItemArr).length);           


                    // go through each of them
                    $(xmlMedItemArr).each(function()
                    {
                            //do what? get each text
                            var childList = $(this).children();

                            myTable.push({
                                label: $(childList[0]).text() + " - " + $(childList[2]).text(),
                                value: $(childList[0]).text(),
                                din: $(childList[2]).text(),
                                code: $(childList[1]).text()
                            });

                    });

        select: function(event,ui) {
            $(".medCode").val(ui.item.code);
            $(".medDin").val(ui.item.din);
        },
但正如前面的问题一样,在我从自动完成结果列表中选择一个项目之后,所有行的两列将被设置为相同的值

如何正确地做到这一点

非常感谢你的帮助

下面是表格部分的html。本席以EBASEXI为平台。它是一个拖放式web开发工具。它将自动生成html和一些脚本。您将在html代码中看到

<!----><div class="CTID-1182-_ eb-1182-panel ">  
<!---->Current Medications</div>
<!----><table class="CTID-1156-_ eb-1156-tableControl " summary="">
<tr>
<td>
<table class="eb-1156-tableNavRow " style="margin-top:5px;margin-bottom:5px;" summary="" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="99%">
<span class="eb-1156-tableNavRowInfo " style="padding-left:10px;">Displaying 1...1 of 1 records</span></td>
<td width="1%" align="right">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table class="eb-1156-tableContent " summary="" title="">
<colgroup>
<col style="width:20%;"><col style="width:4%;"><col style="width:4%;"><col style="width:7%;"><col style="width:7%;"><col style="width:7%;"><col style="width:7%;"><col style="width:11%;"><col style="width:11%;"></colgroup>
<tr>
<th id="CTID-1156-_-C-1164" class="eb-1156-tableColumnHeader eb-1164-tableColumnHeader ">
Medicine Name</th>
<th id="CTID-1156-_-C-1168" class="eb-1156-tableColumnHeader eb-1168-tableColumnHeader ">
Med code</th>
<th id="CTID-1156-_-C-1170" class="eb-1156-tableColumnHeader eb-1170-tableColumnHeader ">
Med drug identification number</th>
<th id="CTID-1156-_-C-1175" class="eb-1156-tableColumnHeader eb-1175-tableColumnHeader ">
Dosage</th>
<th id="CTID-1156-_-C-1177" class="eb-1156-tableColumnHeader eb-1177-tableColumnHeader ">
Unit</th>
<th id="CTID-1156-_-C-1179" class="eb-1156-tableColumnHeader eb-1179-tableColumnHeader ">
Frequency</th>
<th id="CTID-1156-_-C-1181" class="eb-1156-tableColumnHeader eb-1181-tableColumnHeader ">
Unit</th>
<th id="CTID-1156-_-C-1200" class="eb-1156-tableColumnHeader eb-1200-tableColumnHeader ">
</th>
<th id="CTID-1156-_-C-1196" class="eb-1156-tableColumnHeader eb-1196-tableColumnHeader ">
</th>
</tr>
<tr class="CTID-1156-_-R-0 eb-1156-tableRow eb-1156-tableRow ">
<td class="eb-1156-tableContentCell eb-1164-tableColumn " headers="CTID-1156-_-C-1164"><div class="eb-1164-Editor " style="display:inline-block;zoom:1;*display:inline;">
<input id="CTID-1164-_-C-0" class="CTID-1164-_-C-0 eb-1156-tableContentData eb-1164-EditorInput medSearch" type="text" name="CTRL:1164:_:C:0" size="50" maxlength="128" title="Medicine Name"></div>
</td>
<td class="eb-1156-tableContentCell eb-1168-tableColumn " headers="CTID-1156-_-C-1168"><div class="eb-1168-Editor " style="display:inline-block;zoom:1;*display:inline;">
<input id="CTID-1168-_-C-0" class="CTID-1168-_-C-0 eb-1156-tableContentData eb-1168-EditorInput medCode" type="text" name="CTRL:1168:_:C:0" size="5" maxlength="32" title="Med code"></div>
</td>
<td class="eb-1156-tableContentCell eb-1170-tableColumn " headers="CTID-1156-_-C-1170"><div class="eb-1170-Editor " style="display:inline-block;zoom:1;*display:inline;">
<input id="CTID-1170-_-C-0" class="CTID-1170-_-C-0 eb-1156-tableContentData eb-1170-EditorInput medDin" type="text" name="CTRL:1170:_:C:0" size="5" maxlength="64" title="Med drug identification number"></div>
</td>
<td class="eb-1156-tableContentCell eb-1175-tableColumn " headers="CTID-1156-_-C-1175"><div class="eb-1175-Editor " style="display:inline-block;zoom:1;*display:inline;">
<input id="CTID-1175-_-C-0" class="CTID-1175-_-C-0 eb-1156-tableContentData eb-1175-EditorInput " type="text" name="CTRL:1175:_:C:0" size="5" maxlength="10" title="Dosage"></div>
</td>
<td class="eb-1156-tableContentCell eb-1177-tableColumn " headers="CTID-1156-_-C-1177"><div class="eb-1177-Editor " style="display:inline-block;zoom:1;*display:inline;">
<select id="CTID-1177-_-C-0" class="CTID-1177-_-C-0 eb-1156-tableContentData eb-1177-EditorInput " name="CTRL:1177:_:C:0" title="Unit"><option selected="selected" value="">Please select</option><option value="109">mg</option><option value="110">ml</option></select></div>
</td>
<td class="eb-1156-tableContentCell eb-1179-tableColumn " headers="CTID-1156-_-C-1179"><div class="eb-1179-Editor " style="display:inline-block;zoom:1;*display:inline;">
<input id="CTID-1179-_-C-0" class="CTID-1179-_-C-0 eb-1156-tableContentData eb-1179-EditorInput " type="text" name="CTRL:1179:_:C:0" size="5" maxlength="64" title="Frequency"></div>
</td>
<td class="eb-1156-tableContentCell eb-1181-tableColumn " headers="CTID-1156-_-C-1181"><div class="eb-1181-Editor " style="display:inline-block;zoom:1;*display:inline;">
<select id="CTID-1181-_-C-0" class="CTID-1181-_-C-0 eb-1156-tableContentData eb-1181-EditorInput " name="CTRL:1181:_:C:0" title="Unit"><option selected="selected" value="">Please select</option><option value="112">per day</option><option value="113">per 4 hours</option></select></div>
</td>
<td class="eb-1156-tableContentCell eb-1200-tableColumn " headers="CTID-1156-_-C-1200"><input class="CTID-1200-_-C-0 eb-1200-Button addRow" type="submit" name="CTRL:1200:_:D:0" value="Add" title=""></td>
<td class="eb-1156-tableContentCell eb-1196-tableColumn " headers="CTID-1156-_-C-1196"><img class="eb-1196-Image delRow" src="shared/uohi/images/delete_icon.gif" alt="" title="">
</td>
</tr>
</table>
</td>
</tr>
</table>
使用:

而不是你现在拥有的

现行守则:

var searchStr = $(".medSearch").val();

读取符合选择器的第一个元素的值。medSearch感谢您的帮助。 我现在使用以下代码获得了正确的值:

            $(this).closest('tr').find(".medCode").val(ui.item.code);
            $(this).closest('tr').find(".medDin").val(ui.item.din);
谢谢,
小莉

欢迎来到SO!你能分享btnAddRow和btnDelRow的代码吗?我不太明白你在用这些做什么。childList是在哪里定义的?我在我的问题中添加了这部分代码。我认为问题可能仍然与.medCode和.medDin列的类标识符有关。然后当设置值时,所有行中具有这些类标识符的列都被设置为相同的值。你能展示你正在使用的HTML的一个片段吗?您需要找到与正在使用的自动完成相关的元素。我已将表格部分的html代码放在我的问题区域。他们是自动生成代码的DEV工具,我们使用EBASH席拖和安得烈,非常感谢。我改为request.term。现在可以了@小丽人:没问题!如果有帮助,请接受答案!我还有一个问题:我还有两个菲希·安德鲁,对不起,我是这个论坛的新手。我还没有弄清楚如何正确使用线程的所有功能。你能看一下我的进一步问题吗?这是这个问题的第二个答案。@XiaoliRen:没关系,你可以编辑你的问题,以适当的方式包含新的信息,然后删除你的答案。
            $(this).closest('tr').find(".medCode").val(ui.item.code);
            $(this).closest('tr').find(".medDin").val(ui.item.din);