Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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_Php_Forms - Fatal编程技术网

在页面背面运行javascript

在页面背面运行javascript,javascript,php,forms,Javascript,Php,Forms,我有以下问题: 我创建了一个表单,其中包含以下几个输入字段: <td>Pizza Margherita</td> <td><input type="number" id="countMargherita" class="formnumbers" name="PizzaMargherita" onChange="validateForm(this);changeTotalFromCount(this);" data-unitprice="7"/>&

我有以下问题:

我创建了一个表单,其中包含以下几个输入字段:

<td>Pizza Margherita</td>
<td><input type="number" id="countMargherita" class="formnumbers" name="PizzaMargherita" onChange="validateForm(this);changeTotalFromCount(this);"  data-unitprice="7"/></td>
<td><span id="totalMargherita"></span></td>
现在,这意味着用户想要5份玛格丽塔比萨饼,他在输入字段中输入5,然后立即显示成本,在本例中为7*5=35。这很好,但是当用户提交表单时,他会被带到另一个.php文件,在那里他会看到包含所有细节的确认。还有一个按钮需要再次将它们带回订单页面。首先,我只是将其直接发送到我的orderform.php,但这并不能保存客户的输入,因此我决定使用此选项:

<input type='button' value='Bestelling Wijzigen' onClick="history.go(-1);return false;" class='printbutton'>

我不知道这样做是否正确,但我会在用户返回时保存他的信息。除非他/她再次更改输入,否则它不再显示输入旁边的价格。这就是我的问题所在,我希望这样,如果用户回去更改订单,他仍然可以看到每个产品的成本,而不需要更改,然后才能再次看到

我不是一个真正的JS或PHP专家。
(如果您遗漏了任何信息,请告诉我!)

您可以使用
onload
事件运行初始化所有总计的代码。当您使用backbutton进入页面时,以及以任何其他方式访问页面时,都会触发它

比如说

function initTotals()
{
    var inputs = document.getElementsByTagName('input');
    for(var i=0; i < inputs.length; i++)
    {
        changeTotalFromCount(inputs[i]);
    }
}

window.onload = initTotals;
函数initTotals()
{
var inputs=document.getElementsByTagName('input');
对于(变量i=0;i

您需要使用localstorage之类的工具将购物车存储在客户端,或者使用session之类的工具将购物车存储在服务器上。然后,您可以在每次打开表单时正确构建表单。不过,您仍然需要存储状态。您可以轻松地将值存储在Cookie中,然后在订单页面上检索Cookie。很抱歉反应太晚,但这似乎对我不起作用,我甚至复制了您的代码片段,但它仍然不起作用。即使它在您的jsfiddle中工作得很好,您是否可以将
窗口.onload
用于其他用途?因为它可能被覆盖。我没有看到任何其他明显的问题,它可能会干扰其他代码,除非有什么东西抛出错误。等等,不管问题在我页面的第二个表中,是什么原因造成的?由于该表在加载时不做任何事情……当然……我的另一个表是该表单的一部分,它当然也使用输入字段,只有那些字段用于名称、地址等。如果您使用jQuery,我说只要在
load
上的所有输入上触发
change
事件即可,但在普通javascript中这样做有点麻烦,因为在不同的浏览器中它是不同的。我想您可以检查type属性,看看它是否是一个数字。
function initTotals()
{
    var inputs = document.getElementsByTagName('input');
    for(var i=0; i < inputs.length; i++)
    {
        changeTotalFromCount(inputs[i]);
    }
}

window.onload = initTotals;