2016-02-14 28 views
0

幾天前我有一個更復雜的表單,但突然停止工作,我在保存版本時很垃圾,所以我採取了它回到基礎,我不能得到它的工作。我究竟做錯了什麼?我錯誤地使用onInput嗎?獲取跨度的內容以改變輸入的數字

<input type="text" id="number-of-copies-value" onInput="quote()" value="500"> 
<span id="total-cost-value">0.00</span> 

而這裏的Java腳本:

function quote() { 
      var totalcostvalue = document.getElementById("total-cost-value"); 
      var numberofcopiesvalue = document.getElementById("number-of-copies-value").value; 
      var totalcost = (+numberofcopiesvalue); 

      totalcostvalue.innerHTML=totalcost.toFixed(2); 

     } 

     quote(); 

https://jsfiddle.net/tod0wusv/1/

+0

有趣的是這個工程 https://jsfiddle.net/4jc0cb6a/ – Vatsal

+0

是嗎?我發佈的鏈接在Chrome和Firefox上都適用於我 https://jsfiddle.net/4jc0cb6a/ – Vatsal

+0

當我說它沒有工作時,您沒有鏈接:p –

回答

0

你的HTML預計quote()功能是全局可用。確保是這樣。

如果我改變你的小提琴有quote()全局的window對象一樣可用,

window.quote = function quote() { 
    // ... 
}; 

小提琴再次開始工作。

WORKING FIDDLE

如果我創建你的內容的本地HTML文件,它的工作原理向右走,這使得自quote()是在全球範圍內定義的意義。

看起來像JSfiddle在一個函數範圍內執行JavaScript,這會破壞您的quote()調用。

+1

是的,在jsfiddle javascript窗格中,單擊javascirpt的設置(cog圖標),並將「load type」更改爲「no wrap」選項中的任意一個,這應該爲您做。 – inki

0

如果你關心瀏覽器的兼容性這裏描述Detecting "value" of input text field after a keydown event in the text field?

要在的jsfiddle這個工作,我會建議使用具有setTimeout函數中的onkeydown事件,改變了JavaScript的「負載類型」中的JavaScript設置設定爲1的「無包裝」選項。

HTML

<input type="text" id="number-of-copies-value" onkeydown="window.setTimeout(function() { quote(); }, 1)" value="500"> 
<span id="total-cost-value">0.00</span> 

的JavaScript:

function quote() { 
    var totalcostvalue = document.getElementById("total-cost-value"); 
    var numberofcopiesvalue = document.getElementById("number-of-copies-value").value; 
    var totalcost = (+numberofcopiesvalue); 
    totalcostvalue.innerHTML = totalcost.toFixed(2); 

} 

quote(); 

我已經更新了你的jsfiddle ...

https://jsfiddle.net/tod0wusv/6/