Ajax 调用后不会触发 Javascript 事件

标签 javascript jquery html ajax

我有一个表单(输入、文本区域和提交按钮),还有一个项目列表。我编写了以下脚本:

  1. 当我点击列表项时,文本区域将显示列表项文本内容
  2. 提交时,ajax 调用将 POST 表单而不刷新页面

代码第一次工作正常,但当我再单击列表项时,我将无法更新文本区域(上面的#1 点将不再工作)。

var ul = document.getElementById('messages-list');

var listItems = Array.prototype.slice.call(ul.querySelectorAll("li"));

listItems.forEach(function (item) {
  item.addEventListener("click", function (event) {
    document.getElementById("message").textContent = this.textContent;
  });
});

$(function () {

  $('form').on('submit', function (e) {

    e.preventDefault();

    $.ajax({
      type: 'post',
      url: 'send_sms.php',
      data: $('form').serialize(),
      success: function () {
        alert('msg sent');
        $('textarea').val("");
        $('#phoneNumber1').val("");
      }
    });

  });

});

你能帮我解决这个问题吗?提前致谢。

最佳答案

尝试更新 forEach 以在更新 textarea 时使用 .val():

listItems.forEach(function (item) {
  item.addEventListener("click", function (event) {
    $('#message').val(this.textContent);
  });
});

正如其他人所述,.val() 是获取/设置内容的首选方法 - 将其与 textContent 混合似乎会导致您遇到的问题。

关于Ajax 调用后不会触发 Javascript 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44510519/

相关文章:

javascript - 将变量从 Jquery 传递到 PHP

javascript - 如何使用 get/set 获取属性以使用 JSON.stringify() 进行序列化

javascript - 如何将html内容添加到另一个元素?

javascript - 我们可以为单页应用程序提供两个入口点吗?

jquery - 将类添加到 django 表单小部件字段

IOS 11 上的 HTML5 视频标签

javascript - 为什么我在使用 WebGL 时会看到这些奇怪的裁剪伪像?

javascript - 移动 slider 仅响应其他触摸

javascript - 查找最近的图像元素并刷新图像源

javascript - 字符集问题: external javascript file drops non-ASCII characters in HTML