将JavaScript承诺结果添加到隐藏的输入字段
我的主页上有一个表单和JS承诺功能:将JavaScript承诺结果添加到隐藏的输入字段,javascript,jquery,html,forms,promise,Javascript,Jquery,Html,Forms,Promise,我的主页上有一个表单和JS承诺功能: <form action="/run.php" method="POST" target="_blank" id="myform"> <input type="hidden" name="hiddeninput" id="hiddeninput"> <input type="text" name="userinput" id="userinput"> <button type="submit"
<form action="/run.php" method="POST" target="_blank" id="myform">
<input type="hidden" name="hiddeninput" id="hiddeninput">
<input type="text" name="userinput" id="userinput">
<button type="submit">Go!</button>
</form>
<script>
document.getElementById('myform').onsubmit = function go() {
// get user input + other unrelated info
.then(function(adding) {
// calculations
result = x;
});
document.getElementById('hiddeninput').value = "whatever"
}
</script>
document.getElementById'hiddeninput'.value=只要有效,如果它在JavaScript Promise函数之外,就会与表单的其余部分一起成功发布
但是,当它在JavaScript Promise函数中时,它就不起作用了&据我所知,您不能将JavaScript Promise中的值返回到更高的范围,那么有没有任何可能的方法可以访问Promise函数的结果呢,这样我就可以将其设置为document.getElementById'hiddeninput.value?只需将setter移动到then中的value即可。我已经尝试过,如前所述,由于某种原因,该设置不起作用。尽管控制台日志记录可以工作,只是不发布表单正在提交,您必须先阻止它。知道我该怎么做吗,因此,它只有在承诺函数解析后才提交?您必须在两步过程中完成。onsubmit将在承诺解析之前完成。没有办法阻止吗?不,承诺是异步的,因此onsubmit将在承诺重新写入之前完成其执行,但onsubmit将在有人提交表单之前不会开始。有问题吗?我不明白你为什么要阻止它。因为承诺使用userinput值来计算结果。所以document.getElementById'hiddeninput'.value=结果需要在发布之前解析,否则我不能使用hiddeninput值。
<form action="/run.php" method="POST" target="_blank" id="myform">
<input type="hidden" name="hiddeninput" id="hiddeninput">
<input type="text" name="userinput" id="userinput">
<button type="submit">Go!</button>
</form>
<script>
document.getElementById('myform').onsubmit = function go(event) {
var form = this;
event.preventDefault();
// get user input + other unrelated info
.then(function(adding) {
// calculations
result = x;
document.getElementById('hiddeninput').value = result;
form.submit();
});
}
</script>