2014-01-09 134 views
-5

G'day there,在变量内添加两个输入

我不确定我该如何做到这一点。这里有一些代码来提供一些上下文。

// API dictionary 
$(document).ready(function(){ 

    var itemNameTitle = 'Task' 
    var itemQtyTitle = 'Quantity' 
    var itemRateTitle = 'Rate <span>($/hr)</span>' 
    var itemPriceTitle = 'Price <span>($)</span>' 
    var itemNameInput = '<input type="text" name="item-name-input" value="Mockups">' 
    var itemQtyInput = '<input type="text" name="item-qty-input" value="1">' 
    var itemRateInput = '<input type="text" name="item-rate-input" value="35">' 
    var itemPriceCalc = 128/2 

    $('#page').load('templates/default.html', function() { 

      $this = $(this); 
      $this.html($this.html().replace('%item-name-title%',itemNameTitle)); 
      $this.html($this.html().replace('%item-qty-title%',itemQtyTitle)); 
      $this.html($this.html().replace('%item-rate-title%',itemRateTitle)); 
      $this.html($this.html().replace('%item-price-title%',itemPriceTitle)); 
      $this.html($this.html().replace('%item-name-input%',itemNameInput)); 
      $this.html($this.html().replace('%item-qty-input%',itemQtyInput)); 
      $this.html($this.html().replace('%item-rate-input%',itemRateInput)); 
      $this.html($this.html().replace('%item-price-calc%',itemPriceCalc)); 

    }); 

}); 

我希望你能看到我在这里想要做的。基本上我需要itemQtyInputitemRateInputvalue s乘以一起,然后张贴到页面上的div。不幸的是,当我这样做时,它最终会发布'NaN'。

任何人都知道我在做什么错了?

+0

如何ü可以申请师当itemRateInput是一个字符串变量? –

+0

@NitinVarpe请你详细说明一下吗?我是一名jQuery初学者。 –

+1

在你的问题中没有jQuery。这只是普通的Javascript。您将两个变量设置为字符串。 – Barmar

回答

1

试试这个...我想这...这是工作......

$(document).ready(function() { 
       var itemQtyInput = '<input type="text" name="item-qty-input" value="1">' 
       var itemRateInput = '<input type="text" name="item-rate-input" value="35">' 
       var itemPriceCalc = parseFloat(parseInt($(itemRateInput).val())/parseInt($(itemQtyInput).val())); 

       alert(itemPriceCalc); 
       $('div').val(itemPriceCalc); 
      }); 
+0

是否有方法通过'keyup'事件来实现这个解决方案,以便当itemQtyInput或itemPriceCalc被更改时,页面上的答案也会被更改?希望这不是太多问:S –

+0

@ Vishal:这将使用临时输入元素,而不是OP的代码放在页面上的元素。 –

+1

@JeremyBlazé:是的,有;我的回答(以及wrxsti和barmar's)会告诉你如何。只需将该代码放入'keyup'处理程序中即可。 –

3

一旦这些元素在你的页面存在(这样,$("#page").load回调后),你可以得到的jQuery对象对于他们这样的:

var $qty = $("input[name=item-qty-input]"); 
var $rate = $("input[name=item-rate-input]"); 

然后你就可以通过.val得到他们的价值观和解析这些字符串作为十进制浮点:

var qty = parseFloat($qty.val()); // Or a whole number: parseInt($qty.val(), 10) 
var rate = parseFloat($rate.val()); 

然后,当然,除(或乘或加或不管它是你真正想要做):

var itemPriceCalc = rate/qty; // Or + or * 

通常,您会等待为用户事件执行此操作,但我不太确定您的页面的功能。

0

字符串/字符串=非数字

希望这是有道理的:

var value1 = document.getElementById('input1').value; 
var value2 = document.getElementById('input1').value; 

// parseInt converts the string to a integer 
var result = parseInt(value1)/parseInt(value2); 
+0

*“字符串/字符串=非数字”*实际上,对于除法(以及乘法和减法以及许多其他数学运算),JavaScript将强制类型。 '“4”/“2”'是'2'。当然,如果你使用'+',它会连接而不是添加。 –

0

Here is a working example

你不想把文字标记到变量。你想参考一下所谓的选择器:

var itemQtyInput = $('input[name="item-qty-input"]').val(); 
var itemRateInput = $('input[name="item-rate-input"]').val(); 
var itemPriceCalc = itemRateInput/itemQtyInput; 
alert(itemPriceCalc); 

这种情况应该起作用。希望这可以帮助!

0

这里是jQuery的方式做你想要什么:

var qty = parseInt($("input[name=item-qty-input]").val(), 10); 
var rate = parseInt($("input[name=item-rate-input]").val(), 10); 
var product = qty * rate; 
$("#resultDiv").text(product);