我会向你们展示我使用JSFiddles获得的内容,因为它可以更容易解释。这是现在正在运行的形式设置。(只是向您展示一些字段,而不是全部)
http://jsfiddle.net/xk99z/2/
当您更改输入字段之一中的数字时,价格也将立即更改。它为此使用了这件JS:
function changeTotalFromCount(input) {
var unitPrice = parseFloat(input.getAttribute("data-unitPrice"));
var count = input.value;
var price = unitPrice * count;
var formattedPrice = 'u20ac ' + price.toFixed(2);
var label = input.parentNode.nextElementSibling;
label.innerHTML = '';
label.appendChild(document.createTextNode(formattedPrice));
}
当他们按下提交按钮时,他们将被带到另一页,其中订单带有个人详细信息,打印按钮和更改订单按钮。如果他们按更改订单按钮,他们将返回页面:
http://jsfiddle.net/kpfut/
您可以看到,价格将不再显示在数字旁边,但是有人帮助我找到了解决这个问题的解决方案:
function initTotals() {
var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
changeTotalFromCount(inputs[i]);
}
}
window.onload = initTotals;
http://jsfiddle.net/7lkf7/2/
现在有一个问题,它不会与其他输入字段一起使用,例如名称,电话号码,adres等。
http://jsfiddle.net/af724/1/
我希望有人可以帮助我找到解决方案,也许让JS知道我只希望它为input type="number"
运行,因为所有个人详细信息输入字段都是文本。
我在JS中差一点,所以如果您不了解我的问题或您需要更多信息,请告诉我,谢谢!
使用 document.querySelectorAll()
仅选择type =" number"输入元素:
var numberInputs = document.querySelectorAll('input[type="number"]');
for (var i = 0; i < numberInputs.length; i++) {
changeTotalFromCount(numberInputs[i]);
}
或检查其类型的元素:
var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
if(inputs[i].getAttribute('type') == 'number')
changeTotalFromCount(inputs[i]);
}