jquery - codeigniter 文本框 id 中的 jquery 自动完成功能不起作用

标签 jquery html sql codeigniter

我正在表格中创建表单和一个添加按钮、一个删除按钮和一个提交按钮。

当我单击添加按钮时,会创建一个额外的行,当我单击删除按钮时,该行会被删除。

这是我的浏览页面

<div style="overflow: scroll;">
<?php
$attributes = array('class' => 'form-horizontal', 'id' => 'form');
echo form_open('digital/add_task', $attributes);
?>

<table class="table" id="dataTable">
    <thead>
        <tr>
            <th>Select</th>
            <!--<th>Date</th>-->
            <th>Types of Work</th>
            <th>Worked With</th>
            <th>Director</th>
            <th>No of Hours</th>
            <th>Task</th>
            <th>Task Status</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><input type="checkbox" name="chk"/></td>
            <!-- <td><input type="text" name="date[]" value="" /></td>-->
            <td><input type="text" name="work[]" value="" id="task" />
                <span class="text-danger"><?php echo form_error('work[]'); ?></span>
            </td>
            <td><input type="text" name="partner[]" value="" />
                <span class="text-danger"><?php echo form_error('partner[]'); ?></span>
            </td>
            <td>
                <select name="director[]">
                    <option value="hkn">HKN</option>
                    <option value="anita">Anita</option>
                    <option value="ravi">Ravi</option>
                    <option value="ameesha">Ameesha</option>
                </select>
                <span class="text-danger"><?php echo form_error('director[]'); ?></span>
            </td>
            <td><input type="text" name="time[]" value="" />
                <span class="text-danger"><?php echo form_error('time[]'); ?></span>
            </td>
            <td><input type="text" name="task[]" value="" />
                <span class="text-danger"><?php echo form_error('task[]'); ?></span>
            </td>
            <td><input type="text" name="status[]" value="" />
                <span class="text-danger"><?php echo form_error('status[]'); ?></span>
            </td>
        </tr>

    </tbody>
</table>
<input class="btn btn-primary" type="button" value="Add Row" onclick="addRow('dataTable')" />
<input class="btn btn-primary" type="button" value="Delete Row" onclick="deleteRow('dataTable')" />
<input class="btn btn-primary" type="submit" name="submit" value="submit">
<?php
echo form_close();
?>

这是我的模型:

public function search_task($qs) {
    /* comparing data with the text box */
    $query = $this->db->query("SELECT work_name FROM task_name WHERE work_name LIKE ('$qs%') ORDER BY work_name LIMIT 5");
    /* It checks the row in database table */
    if ($query->num_rows > 0) {
        foreach ($query->result_array() as $row) {
            $row_set[] = htmlentities(stripslashes($row['work_name']));
        }
        echo json_encode($row_set);
    }
}

这是我的 Controller :

public function task_search() {

    if (!isset($_GET['term'])) {
        exit;
    }

    $qs = strtolower($this->input->get('term'));
    $this->digital_hodm_model->search_task($qs);
}

这是我的 jquery 文件:

<SCRIPT language="javascript">
function addRow(tableID) {

  var table = document.getElementById(tableID);

  var rowCount = table.rows.length;
  var row = table.insertRow(rowCount);

  var colCount = table.rows[1].cells.length;

  for(var i=0; i<colCount; i++) {

    var newcell = row.insertCell(i);

    newcell.innerHTML = table.rows[1].cells[i].innerHTML;
    //alert(newcell.childNodes);
    switch(newcell.childNodes[0].type) {
      case "text":
          newcell.childNodes[0].value = "";
          break;
      case "checkbox":
          newcell.childNodes[0].checked = false;
          break;
      case "select-one":
          newcell.childNodes[0].selectedIndex = 0;
          break;

    }
  }
}

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 <= 2) {
        alert("Cannot delete all the rows.");
        break;
      }
      table.deleteRow(i);
      rowCount--;
      i--;
    }


  }
  }catch(e) {
    alert(e);
  }
}

</SCRIPT>

<!-- This javascript is used for autocomplete search through database-->

<script type="text/javascript">

$(function(){

        $("#task").autocomplete({
          source: "<?php echo base_url();?>digital/task_search" // path to the task_search method
        });
          });  


</script>

默认情况下,当我在工作类型文本框中键入内容时,我的第一行表格默认从数据库中选择了自动完成文本,但是当我通过单击添加按钮添加一个额外的行时,然后在工作类型字段中,当我键入内容时,然后自动完成未选择完整文本。

请帮我找到解决办法

最佳答案

您正在 $("#task") 上调用自动完成功能。因此具有该 id 的第一个元素获得自动完成功能。其余的被忽略。因此,要么向元素添加一个类,然后可以调用类上的自动完成功能:

$(".someclass").autocomplete({
          source: "<?php echo base_url();?>digital/task_search" // path to the task_search method
        });
          });  

或者您需要向 jquery 生成的新单元格添加一个 id。用这个

jQuery(this).attr("id","newId");

关于jquery - codeigniter 文本框 id 中的 jquery 自动完成功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38457783/

相关文章:

mysql - 禁止访问数据库

sql - SQL 连接如何工作?

sql - 选择两列中两个日期之间的记录

Javascript 突出显示所选范围按钮

javascript - 使悬停菜单适用于移动设备的最佳实践方法是什么?

javascript - 将鼠标悬停在导航链接上时如何防止持续闪烁?

html - anchor为内联元素时,为什么li元素计算高度

jquery - 跨域ajax的问题

javascript - 在视口(viewport) Bootstrap 中更改类

html - SVG 变形