如何从输入 JQuery 或 javascript 中获取修改后的文本
How to get modified text from input JQuery or javascript
我在从输入中获取修改后的文本时遇到问题。输入加载了一些我从数据库中获得的文本,并且有一个选项我应该关闭 onlyread 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 正在工作。
我知道这可以通过表单来完成,但这会重新加载页面,我不想这样。
抱歉我生疏的英语,谢谢 :)
编辑:也许我说的不正确 "change the values" 我正在做的是选择文本并写其他东西。
我用输入显示一些信息,单击允许我修改的按钮,在输入中键入一些新文本,然后单击 "save"
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
编辑:根据我在评论中的猜测,页面中有多个 #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 });
我在从输入中获取修改后的文本时遇到问题。输入加载了一些我从数据库中获得的文本,并且有一个选项我应该关闭 onlyread 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 正在工作。
我知道这可以通过表单来完成,但这会重新加载页面,我不想这样。
抱歉我生疏的英语,谢谢 :)
编辑:也许我说的不正确 "change the values" 我正在做的是选择文本并写其他东西。
我用输入显示一些信息,单击允许我修改的按钮,在输入中键入一些新文本,然后单击 "save"
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
编辑:根据我在评论中的猜测,页面中有多个 #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 });