【问题标题】:How to get modified text from input JQuery or javascript如何从输入的 JQuery 或 javascript 中获取修改后的文本
【发布时间】:2015-03-12 22:34:37
【问题描述】:

我在从输入中获取修改后的文本时遇到问题。输入加载了我从数据库中获取的一些文本,并带有一个选项,我应该关闭 onlyread 属性并更改值。没关系,但是当我在输入中写入其他内容后单击保存按钮时,它会使用 .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() 会变旧 someTextFromDataBase

【问题讨论】:

  • 你能举个例子吗?也许是一个 jsfiddle。
  • 您能解释一下“我应该关闭onlyread attr 并更改值”的意思吗?我们需要看看您是如何设置新值的,这样我们才能弄清楚为什么 .val() 没有正确获取新值。
  • 我在输入中显示一些信息,单击允许我修改的按钮,在输入中键入一些新文本,然后单击“保存”
  • 仅供参考,StackOverflow 的政策不是使用解决方案编辑您的帖子。您应该使用绿色复选标记来指示提供解决方案的答案。根据我们在 cmets 中的讨论,我已经编辑了我的答案以包含实际的解决方案。

标签: javascript jquery text input


【解决方案1】:

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


我怀疑您的代码并不像您展示的那样。你可能正在做这些:

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

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

data: {anInput: anInput, otherInput: otherInput}

到这里:

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

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

【讨论】:

  • 其实和我展示的一样。我试过了,但它是一样的。我只是通过覆盖旧文本来更改输入中的文本
  • @nicomv95 - 然后,输入中的值实际上并没有改变。向我们展示您用于更改它们的 HTML 和代码。这可能有问题。
  • 我添加了html代码。我正在用键盘手动更改它,但这并没有更新值
  • @nicomv95 - 它似乎在这里工作得很好:jsfiddle.net/jfriend00/pxsmqpL2 所以显然还有其他事情发生,你没有用你的 HTML 或 JS 向我们展示。
  • @nicomv95 - 您的页面中是否有多个#anInput 字段?如果是这样,jQuery 可能会获取第一个的值。
【解决方案2】:

请确认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 });

【讨论】:

  • AJAX 不是问题。问题是在它到达那里之前,在之前的两条线上。我检查元素和变量 anInput 和 otherInput 有错误的信息。 .val() 将 html 信息保存在变量中,但我想要我在输入中写的信息
  • 它显示了旧信息。我认为错误的是直接在输入中输入新文本不会改变值。如何获取我在输入中输入的内容?
  • 没有更好的办法。如果您使用var myVar = $('#elementID').val();,那么您获取该元素的当前内容。其他事情正在发生。 jsfiddle.net/8779nnvo
猜你喜欢
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
相关资源
最近更新 更多