2013-07-12 38 views
0

我試圖在使用jQuery的我的網頁中添加一些html。我的代碼是onKeydown在動態添加時無法正常工作

var s1 = "<div class='controls'><label class='inline labelspace'>Minimum Cart Value<input class='inline input-small' type='text' name='mincart' onKeydown=isNumberKey ></input></label>"; 
s1 += "<label class='inline labelspace'>Minimum No Of Items<input class='inline input-small' type='text' placeholder='Enter Integer' name='minitem' onKeydown=isNumberKey></input></label>" ; 
s1 += "<label class='inline labelspace'>Location<input class='inline input-small' type='text' name='location' ></input></label>"; 
s1 += "<label class='inline labelspace'>Product Ids<input class='inline input-small' onKeydown=isValid type='text' name='products'></input></label></div>" ; 
$("#lastrow").before(s1); 

isNumberKey是一個函數,它的源代碼是

function isNumberKey(evt) { 
    console.log('coming to this'); 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) { 
     return false; 
    } else 
     return true; 

} 

使用這些功能,只有數字可以在文本框中輸入。當我指定這樣的元素 $("#some_elem").onKeyDown(isNumberKey)然後它工作正常,但我想知道爲什麼它不工作在第一種情況。

+0

代碼並沒有一個名爲'onKeyDown'在jQuery的事件。我想你正在尋找'keydown'事件。 –

+0

如果你想看看這應該如何工作,請在我的答案中查看演示。 。 – Givi

回答

3

你必須delegate事件。用途:

$(document).on('keydown' , '.some-class', isNumberKey); 

如果appendelements到您的標記,該event不會被他們綁定。所以你需要委託它。使用class而不是id。當然class需要被添加到appendeddiv或在這種情況下,我想input

如果您使用$('.some-class').on('event', function(){}),則活動將僅附加在現有的元素上,其中.some-class。使用代表團將在您想要的任何div上附上event

+0

'$( 「#some_elem」)之間的差的onkeydown(isNumberKey)' 和 '$(文件)。在( 'KEYDOWN', '#some_elem',isNumberKey);' 是,第一個結合到一個現有的對象,第二個將處理每個選定的對象,即使它是在綁定 – barvaz

+0

告訴如何在HTML屬性 –

+0

中完成它創建的,您必須在dom就緒後將其運行到您的腳本頁面,如果需要的話。 – steo

-1

櫃面,如果你想在HTML中accompanish,請嘗試更改以下

onKeydown="isNumberKey()" 
+0

不是我爲什麼減去。他的問題**'$(「#some_elem」)。onKeyDown(isNumberKey)'那麼它工作正常,但我想知道爲什麼它不能在第一種情況下工作** – Praveen

+0

如果我錯了,請糾正我的錯誤 – Praveen

+0

'objElement.onkeydown = isNumberKey'我認爲這是正確的根據JavaScript語法。 –

相關問題