javascript - 将文本输入值更新到段落中的问题

标签 javascript jquery html css

我试图通过文本输入字段编辑现有段落。我已经编写了代码,其中一些工作正常。但问题是我无法更新我编辑的新值。我尝试为更新链接编写事件,但该事件不适用于此链接。请帮我。提前谢谢你。

$(document).ready(function() {
  $(".membership-input").hide();
  $(".membership-edit, .membership-update").on("click", function() {
    if ($(this).text() == 'Edit') {
      $(this).text('Update').removeClass("membership-edit").addClass("membership-update");
      //$(".membership-input").removeAttr("disabled").focus().select();
      $(this).parents("tr").find(".membership-input").show();
      $(this).parents("tr").find(".site-name").hide();
      inputVal = $(this).parents("tr").find(".site-name").text();
      $(this).parents("tr").find(".membership-input").val(inputVal).focus().select();
      $(this).parents("tr").find(".site-name").val(updatedVal);
    } else {
      $(this).text('Edit').removeClass("membership-update").addClass("membership-edit");
      //$(".membership-input").attr({"disabled":"disabled"});
      $(this).parents("tr").find(".membership-input").hide();
      $(this).parents("tr").find(".site-name").show();
    }

  });

});
.site-settings>tbody>tr>td {
  border-top: none !important;
  vertical-align: middle;
}

.site-settings>tbody>tr>td:first-child {
  padding-left: 0;
  width: 30%;
}

.site-settings>tbody>tr>td:last-child {
  padding-left: 0;
  width: 30%;
}
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<main class="all-content-wrap">
  <div class="admin-console-wrap">
    <div class="container-fluid">
      <div class="row">
        <div class="col-sm-12">
          <h1>Site Settings</h1>
          <h4 class="mrgn-top-20">Names</h4>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-12">
          <table class="table site-settings">
            <tbody>
              <tr>
                <td>
                  <p>Site Name</p>
                </td>
                <td>
                  <p class="site-name">Lorem</p>
                  <input class="form-control input-md membership-input" type="tet">
                </td>
                <td>
                  <p><a class="link membership-edit" href="#">Edit</a></p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>Site Alternate Name</p>
                </td>
                <td>
                  <p class="site-name">Lorem.com</p>
                  <input class="form-control input-md membership-input" type="tet">
                </td>
                <td>
                  <p><a class="link membership-edit" href="#">Edit</a></p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>Legal Name of Business</p>
                </td>
                <td>
                  <p class="site-name">Lorem (india) Pvt. Ltd.</p>
                  <input class="form-control input-md membership-input" type="tet">
                </td>
                <td>
                  <a class="link membership-edit" href="#">Edit</a>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
    </div>
  </div>
</main>
<script src="https://cdn.paperindex.com/bootstrap/js/bootstrap.min.js">
</script>

最佳答案

看到你的程序,发现了两个问题。


  1. 您似乎在程序中使用了未声明的 "updatedVal" 变量,而不是使用包含 dom (.文本()).

  2. 您还没有编写任何代码来使用 input.val() 更新 dom 文本。因此获取输入的 val 并将其设置为 DOM 的文本。

为了更好地理解,我附上了更新后的代码。

更新代码

$(document).ready(function() {
  $(".membership-input").hide();
  $(".membership-edit, .membership-update").on("click", function() {
    if ($(this).text() == 'Edit') {
      $(this).text('Update').removeClass("membership-edit").addClass("membership-update");
      //$(".membership-input").removeAttr("disabled").focus().select();
      $(this).parents("tr").find(".membership-input").show();
      $(this).parents("tr").find(".site-name").hide();
      inputVal = $(this).parents("tr").find(".site-name").text();
      $(this).parents("tr").find(".membership-input").val(inputVal).focus().select();
    } else {
      updatedVal = $(this).parents("tr").find(".membership-input").val();
      $(this).parents("tr").find(".site-name").text(updatedVal);

      $(this).text('Edit').removeClass("membership-update").addClass("membership-edit");
      //$(".membership-input").attr({"disabled":"disabled"});
      $(this).parents("tr").find(".membership-input").hide();
      $(this).parents("tr").find(".site-name").show();
    }

  });

});
.site-settings>tbody>tr>td {
  border-top: none !important;
  vertical-align: middle;
}

.site-settings>tbody>tr>td:first-child {
  padding-left: 0;
  width: 30%;
}

.site-settings>tbody>tr>td:last-child {
  padding-left: 0;
  width: 30%;
}
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<main class="all-content-wrap">
  <div class="admin-console-wrap">
    <div class="container-fluid">
      <div class="row">
        <div class="col-sm-12">
          <h1>Site Settings</h1>
          <h4 class="mrgn-top-20">Names</h4>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-12">
          <table class="table site-settings">
            <tbody>
              <tr>
                <td>
                  <p>Site Name</p>
                </td>
                <td>
                  <p class="site-name">Lorem</p>
                  <input class="form-control input-md membership-input" type="tet">
                </td>
                <td>
                  <p><a class="link membership-edit" href="#">Edit</a></p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>Site Alternate Name</p>
                </td>
                <td>
                  <p class="site-name">Lorem.com</p>
                  <input class="form-control input-md membership-input" type="tet">
                </td>
                <td>
                  <p><a class="link membership-edit" href="#">Edit</a></p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>Legal Name of Business</p>
                </td>
                <td>
                  <p class="site-name">Lorem (india) Pvt. Ltd.</p>
                  <input class="form-control input-md membership-input" type="tet">
                </td>
                <td>
                  <a class="link membership-edit" href="#">Edit</a>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
    </div>
  </div>
</main>
<script src="https://cdn.paperindex.com/bootstrap/js/bootstrap.min.js">
</script>

如果您仍然发现任何问题,请随时发表评论。

关于javascript - 将文本输入值更新到段落中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47410900/

相关文章:

javascript - Vue.js 中来自 JSON 对象的值

javascript - 将iron-ajax响应绑定(bind)到嵌套元素的属性中

javascript - CSS/Javascript : How to make rotating circular menu with multiple states?

javascript - 我无法在 XML 中使用 find() 方法进行搜索

javascript - 如何在 html 中使用 jQuery 来正确显示下拉菜单

html - 在 iphone 上加载时显示边距/背景

html - Bootstrap 4布局,一列宽度固定

javascript - 使用 Bootstrap 样式自定义 facebook 共享按钮

javascript - "Uncaught Cannot extend unknown button type: copyHtml5"- 如何使用 `datatables.net-buttons-bs4`

jquery - 拖放在 fullCalendar 中不起作用