如何从输入 JQuery 或 javascript 中获取修改后的文本

How to get modified text from input JQuery or javascript

本文关键字:修改 获取 文本 javascript 输入 JQuery      更新时间:2023-09-26

我从输入中获取修改的文本时遇到问题。输入加载了一些我从数据库中获得的文本,并且有一个选项,我应该关闭唯一读取的attr并更改值。没关系,但是当我在输入中写入其他内容后单击保存按钮时,它会使用 .val() 获取旧值。我怎样才能得到新的?

代码是这样的。

    var anInput = $("#anInput").val(); //gets old value
    var otherInput = $("#otherInput").val(); //gets old value
    $.ajax({
          type: "POST",
          dataType: "html",
          success: doSomething,
          timeout: 4000,
          error: someProblems,
          url: "modules/mod.php",
          data: {anInput: anInput, otherInput: otherInput}
    });

我添加了 AJAX 代码只是为了提到我需要值来做某事。AJAX 正在工作。

我知道这可以通过表单完成,但这会重新加载页面,我不希望这样。

对不起,我的英语生疏,谢谢:)

编辑:也许我在说"更改值"时说得不正确,我正在做的是选择文本并写其他东西。

用输入显示一些信息,单击允许我修改的按钮,在输入中键入一些新文本,然后单击"保存"

HTML 由另一个 AJAX 生成

<div class="infoVideo">
   <input id="anInput" value="someTextFromDataBase">
   <input id="otherInput" value="someTextFromDataBase">
   <input type="button" id="btnMod">
   <input type="button" id="btnSave">
</div>

如果我擦除并在输入中键入其他内容 .val() 变旧了一些文本来自数据库

编辑:根据我评论中的猜测,页面中有多个#anInput,因此代码仅从第一个检索值,而不是正在编辑的值。 解决方案是在页面的 HTML 中没有任何重复的 id 值。


我怀疑你的代码并不像你展示的那样。 您可能正在执行以下操作:

var anInput = $("#anInput").val(); //gets old value
var otherInput = $("#otherInput").val(); //gets old value

只有一次,然后尝试使用anInput,并在表单字段已经更改后很久再尝试使用otherInput。 您可以通过不缓存这些值并在需要时通过更改以下内容来检索当前值来获取这些值:

data: {anInput: anInput, otherInput: otherInput}

对此:

data: {anInput: $("#anInput").val(), otherInput: $("#otherInput").val()}

这样,您始终可以在调用 Ajax 之前检索最新和最大的值。

请确认 mod.php 返回的数据格式。AJAX 块期望接收 HTML 格式的文本dataType: 'html', - 但您正在发送 json,所以这是您期望返回的吗?

如果本说明没有透露解决方案,那么请向我们展示您的doSomething函数 - 这是处理返回数据的地方。


可能您已经尝试过此操作,但是如果这样做会发生什么:

var anInput = $("#anInput").val(); //gets old value
alert(anInput);
var otherInput = $("#otherInput").val(); //gets old value
alert(otherInput);
$.ajax({ //etc });