我会告诉大家我用jsfiddles得到了什么因为它更容易解释。 这就是我现在正在运行的那种表单设置。 (只是向你展示一些领域,而不是全部)
当您更改其中一个输入字段中的数字时,价格也会立即改变。 它使用这块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));
}
当他们按下提交按钮时,他们将被带到另一个页面,其中订单包含他们的个人详细信息,打印按钮和更改订单按钮。如果他们按下更改订单按钮,他们将返回到以下页面:
正如您所看到的那样,价格不再显示在该数字旁边了,但有人帮我找到了解决此问题的方法:
function initTotals() {
var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
changeTotalFromCount(inputs[i]);
}
}
window.onload = initTotals;
现在有一个问题,它不能与其他输入字段一起使用,如姓名,电话号码,地址等。
我希望有人可以帮我找到解决方案,让JS知道我只希望它运行input type="number"
,因为所有个人信息输入字段都是文本。
我在JS方面没有经验,所以如果您不理解我的问题或者您需要更多信息,请告诉我,提前谢谢!
答案 0 :(得分:0)
使用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]);
}