javascript - 更改 td 内容以选择,反之亦然

标签 javascript php jquery html

我有一个 tr,如果您单击它,它将变为 select 并允许用户选择一个选项。在用户点击离开输入后,如何让它返回到具有新值的 td

$(function() {
  $(".departamento").one('click', function(e) {
    e.stopPropagation();
    var currentEle = $(this);
    var value = $(this).html();
    select = '<select class="form-control" id="departamento" name="departamento">' +
      '<option name="Comercial" <?php echo ($departamento == "Comercial")?"selected":""; ?> >Comercial</option>' +
      '<option value="Suporte Tecnico" <?php echo ($departamento == "Suporte Tecnico")?"selected":""; ?> >Suporte Técnico</option>' +
      '<option value="Direcao" <?php echo ($departamento == "Direcao")?"selected":""; ?> >Direção</option>' +
      '<option value="Formacao "<?php echo ($departamento == "Formacao")?"selected":""; ?> >Formação</option>' +
      '</select>';
    currentEle.html(select);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <th>Departamento</th>
    <td class="departamento">
      <?php echo $departamento;?>
    </td>
  </tr>
</table>

谢谢!

最佳答案

要实现此目的,您可以在 selectblur 事件中将 td 的内容切换回原位。您还可以整理逻辑以使用一个类来允许内容切换,这样您就不需要使用 one(),它只允许操作发生一次。

另请注意,您可以根据 td 的文本来改进在 select 中选择默认值的逻辑,而不必将大量意大利面条式 PHP 放入JS。试试这个:

$(function() {
  $(".departamento").on('click', function(e) {
    e.stopPropagation();
    var $td = $(this);

    if ($td.hasClass('active'))
      return;

    var value = $td.text().trim();
    $td.empty();
    var $select = $('<select class="form-control" id="departamento" name="departamento">' +
      '<option name="Comercial">Comercial</option>' +
      '<option value="Suporte Tecnico">Suporte Técnico</option>' +
      '<option value="Direcao">Direção</option>' +
      '<option value="Formacao">Formação</option>' +
      '</select>').val(value).appendTo($td).focus();
      $td.addClass('active');
  }).on('blur', 'select', function() {
    var $select = $(this);
    var $td = $select.closest('td');
    $td.html($select.val()).removeClass('active');
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <th>Departamento</th>
    <td class="departamento">
      Direcao
    </td>
  </tr>
</table>

关于javascript - 更改 td 内容以选择,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43735484/

相关文章:

javascript - Web Worker 的最佳数量

javascript - 创建新模型时将模型 url 与集合 url 关联

javascript - jQuery DataTables 中的空表体

jquery - 如何访问弹出定义中的调用对象?

javascript - 如何正确使用on方法?

c# - 网页与COM口对接控制页面

php - symfony 内存不足错误

php - Netbeans 切换只读

javascript - 在 angularJs 中从 Controller 调用同时 $http 服务?

javascript - 带有图像的自定义文本区域