我不确定我的代码有什么问题。我不断获得maxLength的NaN变量。我是否正确编写此函数?
我正在尝试调用的辅助函数:
(function($) {
$.fn.countRemainingCharactersHelper = function(maxLength) {
id = this.attr('id');
var textLength = this.val().length;
var textRemaining = maxLength - textLength;
if (textLength >= maxLength) {
textRemaining = 0;
}
var messageId = id.slice(0, (id.indexOf('someTxtBox'))) + 'someTxtBox';
$('#' + messageId).html(textRemaining + ' characters remaining.');
};
})(jQuery);
调用上述辅助函数的函数:
function countRemainingCharacters() {
$(this).countRemainingCharactersHelper(1000);
}
function countRemainingCharacters(maxLength) {
$(this).countRemainingCharactersHelper(maxLength);
}
调用传递maxLength变量的函数
$('#samplesomeTxtBox').click(function() {
countRemainingCharacters(4000);
});
this
会window
在您的countRemainingCharacters()
函数中引用,因为您没有使用范围调用它。您可以使用call()
以下方法解决此问题:
$('#samplesomeTxtBox').click(function() {
countRemainingCharacters.call(this, 4000);
})
还要注意,用于生成id
元素的逻辑来放置消息的逻辑有些偏离。您可以通过使用data
属性来显式设置元素ID来对其进行改进。
在这种情况下,您的重载方法也是多余的,因为您可以利用JavaScript的“伪造”逻辑来提供默认值(如果未提供默认值)。这意味着您可以将两个countRemainingCharacters()
函数转换为一个:
function countRemainingCharacters(maxLength) {
$(this).countRemainingCharactersHelper(maxLength || 1000);
}
此时剩下的就是创建一个键事件处理程序,以计算用户键入时剩余的字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句