我根据4个文本框的值进行了一些计算,但是我想要的只是当4个文本框有值时计算它。
听起来很简单,但只有当上述条件为真并且在每个键盘上重新计算时,我才能想到运行计算的方法。
$(window).load(function(){
$('#quantity, #length, #width, #height, #weight').keyup(function () {
$('#volumetric_weight').val($('#length').val()*$('#width').val()*$('#height').val()*$('#quantity').val()/5000);
答案 0 :(得分:2)
尝试使用required
属性,仅在每个input
有效时进行计算
$(function() {
var inputs = $("form input"), product = 1;
inputs.on("input", function() {
if (document.forms["calculate"].checkValidity()) {
inputs.each(function(i, el) {
product *= el.value;
});
$("#volumetric_weight").val(product / 5000);
product = 1;
}
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<form name="calculate">
<input type="number" id="quantity" required />
<input type="number" id="length" required />
<input type="number" id="width" required />
<input type="number" id="height" required />
<input type="number" id="weight" required />
</form>
<input type="text" value="" id="volumetric_weight" />
jsfiddle https://jsfiddle.net/b185Lh80/
答案 1 :(得分:1)
您需要首先检查输入字段是否有值(所有这些),然后执行您的代码。 在你的问题中,你提到4个文本框,但在你的代码中你有5个;) 像这样的东西
$(window).load(function(){
$('#quantity, #length, #width, #height, #weight').keyup(function () {
if(!$('#quantity').val() || !$('#length').val() || !$('#width').val() || !$('#height').val() || !$('#weight').val()) return;
$('#volumetric_weight').val($('#length').val()*$('#width').val()*$('#height').val()*$('#quantity').val()/5000);
答案 2 :(得分:0)
您可以在计算之前测试所有值是否存在:
Status: active
To Action From
-- ------ ----
3838/tcp ALLOW Anywhere
3838 ALLOW Anywhere
80 ALLOW Anywhere
3838/tcp ALLOW Anywhere (v6)
3838 ALLOW Anywhere (v6)
80 ALLOW Anywhere (v6)
请注意,我使用了@Mathew的建议:将$(window).load(function(){
$('#quantity, #length, #width, #height, #weight').change(function () {
var len = $('#length').val();
width = $('#width').val();
height = $('#height').val();
qty = $('#quantity').val();
if (!!len && !!width && !!height && !!qty) {
$('#volumetric_weight').val(len * width * height * qty / 5000);
}
});
})
替换为change()
,以便在用户过去时也能抓住。