2013-04-05 75 views
0

我創建了一個jQuery函數來計算文本字段中的字符數量並輸出數字。但它似乎並沒有被要求發佈密鑰。與文本字段的頁面是被納入index.php外部頁面和js被包括從外部js文件。jQuery字符數 - 函數不被調用

$('#commentField').keyup(function() { 
    alert("functionCalled"); 
    var max = 500; 
    var len = $(this).val().length; 
    if (len >= max) { 
     $('#charNum').html(' you have reached the limit'); 
    } else { 
     var char = max - len; 
     $('#charNum').text(char + ' characters left'); 
    } 
    }); 

文本區域:

<input type="text" name="commentArea" placeholder="Comment..." autofocus="autofocus" id="commentField"/> 

div要填充:

<div id="charNum">here</div> 

外部js文件將被罰款的訪問,但功能似乎並沒有被調用。爲什麼這不起作用?

+0

你沒有得到警報? – 2013-04-05 17:42:28

+1

什麼是$(「#commentField」)。長度您添加KEYUP聽衆之前的價值? – 2013-04-05 17:42:47

+0

不,我沒有得到警報。 – Colin747 2013-04-05 17:42:54

回答

4

如果它是動態內容,那麼你需要調用.on。但是,我會將「身體」改變爲更接近DOM的元素。

$('body').on('keyup','#commentField',function() { 
    alert("functionCalled"); 
    var max = 500; 
    var len = $(this).val().length; 
    if (len >= max) { 
     $('#charNum').html(' you have reached the limit'); 
    } else { 
     var char = max - len; 
     $('#charNum').text(char + ' characters left'); 
    } 
}); 
+0

工作,謝謝! – Colin747 2013-04-05 17:47:58

+0

好想法詹姆斯。 – Zach 2013-04-05 17:49:59

1

您的事件處理函數是否處於文檔就緒函數中?

$(function() { 

    //put your code here 

}); 

接下來,您的輸入是否存在於事件綁定時的頁面上?換句話說,你的元素是動態添加的嗎?如果是這樣,請嘗試事件代表團。

+0

是的,它在'(document ).ready'功能,它被動態地添加。 – Colin747 2013-04-05 17:46:52

2

char是javascript中的保留字,所以你的keyup函數沒有編譯。嘗試使用不同的名稱。

編輯:

它似乎在this fiddle工作。

+0

我已經改變了變量名,我仍然沒有得到警告 – Colin747 2013-04-05 17:46:36

+0

。嗯,讓我看看INT它進一步。 – Nolo 2013-04-05 17:53:14

+0

@Nolo,詹姆斯得到了解決方案。科林通過AJAX導入JS代碼,這是這種情況下的基本問題。 – 2013-04-05 17:59:50