2014-01-09 130 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);