2014-01-11 157 views
1

我正在嘗試使用鍵盤功能修改表單的<input>中具有數據屬性的腳本。數據屬性更改爲data-cost=""。我通過使用Chrome的檢測元素工具驗證了keyup事件中發生的變化是否正確。腳本在觸發鍵盤事件後不會觸發更新數據屬性

我遇到的問題是使用數據屬性data-cost=""的腳本在更改時未更新。我不知道如何在變更後讓腳本觸發。

我所指的腳本總結了每次單擊複選框時名爲data-cost的所有數據屬性。

這是輸入HTML:

<input data-cost="" value="" type="checkbox" name="f_2[]"/> 

這是keyup腳本,其中也有blur和它copy

$(function() { 
     $('#account_balance1').on('keyup blur paste', function() { 
      var self = this; 
      setTimeout(function() { 
       var str = $(self).val(); 
       $("input[data-cost][debt]").attr('data-cost',str.replace(/^\$/, '')); 
       $("input[data-cost][debt]").attr('debt',str.replace(/^\$/, '')); 
      }, 0) 
     })  
}); 
+0

您能否包含您正在嘗試觸發的腳本正在讀取數據成本屬性? – erikrunia

回答

0

只是在黑暗中拍攝,因爲我對你想要完成的東西有點困惑,但是最後一個.attr的改變,你會想要調用你正在進行求和的函數,如下所示:

$(function() { 
     $('#account_balance1').on('keyup blur paste', function() { 
      var self = this; 
      setTimeout(function() { 
       var str = $(self).val(); 
       $("input[data-cost][debt]").attr('data-cost',str.replace(/^\$/, '')); 
       $("input[data-cost][debt]").attr('debt',str.replace(/^\$/, '')); 
       YourSummingFunctionName(maybeEvenPassSomething); 
      }, 0) 
     })  
}); 

在一個不相關的音符,一旦你擁有了一切工作,你所希望的方式,嘗試刪除setTimeout的一部分,我不認爲這是必要的你正試圖在這裏做。

+0

好的,我會刪除它。另外,我將把另一個腳本放在小提琴中,因爲它對於這個站點來說太大了。 –

+0

沒有必要,只需從代碼中的名稱調用該函數,就像我上面展示的那樣...而不是YourSummingFunctionName()使用您稱爲的任何東西 – erikrunia

0

你試過使用$(this)而不是這個嗎?

+0

謝謝,但它沒有奏效。問題不在於該腳本,它確實有效。問題出在我的計算腳本上,在密鑰腳本更改數據後未觸發。 –

相關問題