2016-05-15 59 views
0

我有问题,第一个文本框的作品自动完成,但不能用于其他通过按钮添加的作品。这里是我的代码:jQuery自动完成不适用于多个文本输入

HTML:

<input class="button" type="button" value="+" onclick="addRow('positionen')" /> 
<input class="button" type="button" value="-" onclick="deleteRow('positionen')" /> 
<table id="positionen"> 
    <tr> 
     <td><input type="checkbox" name="chk[]" /></td> 
     <td><input class="ui-widget" type="text" name="text[]" placeholder = "Text" /></td> 
     <td><input type="text" name = "val[]" placeholder = "Val" /></td> 
    </tr> 
</table> 

功能addRow:

function addRow(tableID) { 
    var table = document.getElementById(tableID); 
    var rowCount = table.rows.length; 
    var row = table.insertRow(rowCount); 
    var colCount = table.rows[0].cells.length; 
    for(var i=0; i<colCount; i++) { 
     var newcell = row.insertCell(i); 
     newcell.innerHTML = table.rows[0].cells[i].innerHTML; 
     switch(newcell.childNodes[0].type) { 
      case "text": 
        newcell.childNodes[0].value = ""; 
        break; 
      case "checkbox": 
        newcell.childNodes[0].checked = false; 
        break; 
     } 
    } 
} 

功能deleteRow:

function deleteRow(tableID) { 
    try { 
     var table = document.getElementById(tableID); 
     var rowCount = table.rows.length; 
     for(var i=0; i<rowCount; i++) { 
      var row = table.rows[i]; 
      var chkbox = row.cells[0].childNodes[0]; 
      if(null != chkbox && true == chkbox.checked) { 
       if(rowCount <= 1) { 
        alert("Can't delete all rows"); 
        break; 
       } 
       table.deleteRow(i); 
       rowCount--; 
       i--; 
      } 
     } 
    } catch(e) { 
     alert(e); 
    } 
} 

自动完成代码:

$(function() { 
    $(".ui-widget").focusin(function(){ 
     $(this).autocomplete({ 
      source: 'search.php' 
     }); 
    }); 
}); 

默认情况下页面上的第一个文本框与自动完成工作正常。但是,当我使用按钮添加文本框时,自动完成功能不适用于此文本框。加载页面时

回答

0

事件是绑定到HTML,新行不存在,你只需要通过简单地增加给你的addRow功能

function addRow(tableID) { 
    var table = document.getElementById(tableID); 
    var rowCount = table.rows.length; 
    var row = table.insertRow(rowCount); 
    var colCount = table.rows[0].cells.length; 
    for(var i=0; i<colCount; i++) { 
     var newcell = row.insertCell(i); 
     newcell.innerHTML = table.rows[0].cells[i].innerHTML; 
     switch(newcell.childNodes[0].type) { 
      case "text": 
        if (newcell.childNodes[0].className === 'ui-widget ui-autocomplete-input') { 
         $(newcell.childNodes).autocomplete({ 
          source: 'search.php' 
         }); 
        } 
        newcell.childNodes[0].value = ""; 
        break; 
      case "checkbox": 
        newcell.childNodes[0].checked = false; 
        break; 
     } 
    } 
} 
+0

“row.autocomplete”将其绑定到创建的行不适合我。然而,当我做“$(”。ui-widget“)。自动完成({0128}它工作正常! – thotho

+0

我的错误:),我忘了把行放在$()中。如果你“$(”。ui-widget“)。autocomplete({source:'search.php'});”你正在绑定事件到现有的行 - 你自动完成事件将被称为几次这是错误的 - 编辑答案 – homer

+0

可悲的是,这是行不通的... – thotho

相关问题