<b id="smsCount"></b> SMS (<b id="smsLength"></b>) Characters left
<br /><textarea id="smsText" style="width:400px;height:200px">
</textarea>
//Plugin
(function($){
jQuery.fn.smsArea = function(options){
var
e = this,
cutStrLength = 0,
s = jQuery.extend({
cut: true,
maxSmsNum: 3,
interval: 400,
counters: {
message: jQuery('#smsCount'),
character: jQuery('#smsLength')
},
lengths: {
ascii: [160, 306, 459],
unicode: [70, 134, 201]
}
}, options);
e.keyup(function(){
clearTimeout(this.timeout);
this.timeout = setTimeout(function(){
var
smsType,
smsLength = 0,
smsCount = -1,
charsLeft = 0,
text = e.val(),
isUnicode = false;
for(var charPos = 0; charPos < text.length; charPos++){
switch(text[charPos]){
case "\n":
case "[":
case "]":
case "\\":
case "^":
case "{":
case "}":
case "|":
case "€":
smsLength += 2;
break;
default:
smsLength += 1;
}
//!isUnicode && text.charCodeAt(charPos) > 127 && text[charPos] != "€" && (isUnicode = true)
if(text.charCodeAt(charPos) > 127 && text[charPos] != "€")
isUnicode = true;
}
if(isUnicode) smsType = s.lengths.unicode;
else smsType = s.lengths.ascii;
for(var sCount = 0; sCount < s.maxSmsNum; sCount++){
cutStrLength = smsType[sCount];
if(smsLength <= smsType[sCount]){
smsCount = sCount + 1;
charsLeft = smsType[sCount] - smsLength;
break
}
}
if(s.cut) e.val(text.substring(0, cutStrLength));
smsCount == -1 && (smsCount = s.maxSmsNum, charsLeft = 0);
s.counters.message.html(smsCount);
s.counters.character.html(charsLeft);
}, s.interval)
}).keyup()
}}(jQuery));
//Start
jQuery(function(){
jQuery('#smsText').smsArea({maxSmsNum:3});
});
我正在使用Wordpress,M将制作一些计算ASCII和Unicode字符的smscount系统。我看到Wordpress采用jQuery而不是$。但它没有用。 Dnt知道我犯了错误吗?
感谢任何帮助。
答案 0 :(得分:1)
改变......
jQuery(function(){
jQuery('#smsText').smsArea({maxSmsNum:3});
});
......进入......
(function($){
$(document).on('ready', function(){
$('#smsText').smsArea({maxSmsNum:e})
})
})(jQuery);
如果DOM中存在id="smsText"
的元素,并且在运行上面的那个时,定义smsArea()
函数的脚本已准备好/已加载,则可以删除document.ready
包装器(删除行2
和4
- 不删除3
!)。
但是,上面语法中的关键不是document.ready
包装器,而是围绕它的那个。 &#34; jQuery包装器&#34; 。您需要创建一个闭包并传递jQuery
作为参考。这是WordPress&#34; 的标准&#34; jQuery包装器,因为在极少数情况下WP需要在同一页面上运行不同版本的jQuery(取决于您加载的插件/主题) )。
如果你看看你上面的功能,它就会以同样的方式包裹起来。