Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JavaScript承诺结果添加到隐藏的输入字段_Javascript_Jquery_Html_Forms_Promise - Fatal编程技术网

将JavaScript承诺结果添加到隐藏的输入字段

将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"

我的主页上有一个表单和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">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>