向管理输入和文本区域添加字符计数
Add a character count to admin inputs and textareas
我想在我的Magento商店管理的产品详细信息页面中添加一个字符计数到每个输入和文本区域。
我已经习惯了jQuery,但如果可能的话,我宁愿使用默认的Prototype库。我在某个地方发现了这段代码,它专门用于短描述和描述字段,使用它们的ID来针对它们:
Event.observe(window, 'load', function() {
Element.insert( $('short_description').up().next().down('span'), {
'after': "<div id='short_description_counter'>Char count: <span id='short_description_counter_num'>"+$('short_description').getValue().length+"</span></div>"
});
Element.insert( $('description').up().next().down('span'), {
'after': "<div id='description_counter'>Char count: <span id='description_counter_num'>"+$('description').getValue().length+"</span></div>"
});
Event.observe('short_description', 'keyup', function(event) { $("short_description_counter_num").update(this.getValue().length); });
Event.observe('description', 'keyup', function(event) { $("description_counter_num").update(this.getValue().length); });
});
有原型经验的人能告诉我如何编辑这个,使它运行在每个输入和文本区域,所以不指定ID?我假设有一些each(函数)可以使用。
更新:下面是文本区域的当前代码,由它的ID指定- http://jsbin.com/isisur/2/edit
我的原型是生锈的,但我认为这将工作:
Event.observe(window, 'load', function() {
$$('input[type="text"], textarea').each( function(i) {
var my_id = $(i).readAttribute('id');
$(i).insert({
'after': "<div id='"+my_id+"_counter'>Char count: <span id='"+my_id+"_counter_num'>"+$(i).getValue().length+"</span></div>"
});
$(i).observe('keyup', function(e) {
$(my_id+"_counter_num").update($(this).getValue().length);
});
});
});
JSFiddle
一个更灵活的代码,适用于validate-length
和maximum-length-XXX
类的每个字段:
document.observe('dom:loaded', function() {
Element.addMethods({
prepare_for_countdown: function(element) {
var elm = $(element);
if(!elm.retrieve('counter')) {
var counter = new Element('span');
elm.next('.note').insert(counter);
elm.store('counter', counter);
var maxLen = elm.className.match(/maximum-length-('d+)/)[1];
elm.store('maxLen', maxLen);
}
return elm;
},
countdown: function(element) {
var elm = $(element);
var curLen = elm.getValue().length;
var maxLen = elm.retrieve('maxLen');
var count = maxLen - curLen;
var counter = elm.retrieve('counter');
if (curLen >= maxLen) {
counter.update(' (' + count + ')').setStyle({'color': 'red'});
} else {
counter.update(' (+' + count + ')').setStyle({'color': 'green'});
}
return elm;
}
});
$$('.validate-length').invoke('prepare_for_countdown').invoke('countdown');
document.on('keyup', '.validate-length', function(evt, elm) {
elm.countdown();
});
});
相关文章:
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 使用Google Maps API向标记添加多个字符
- 如何使用Javascript在给定的句子中找到大写单词并在其前面添加一个字符
- 在输入中添加打断html的字符
- 如果两个跨度有数据,则添加字符
- 将组成单词的字符添加到数组的开头
- 考虑到我在JavaScript中使用.replace.更改了特定单词中间的另一个字符,我如何在该单词之前添加字符
- 添加字符功能需要在小数点前加0
- 在SilverStripe表单的TextField附近添加字符计数
- 如何编辑这个JS代码,以便在散列文本中添加字符,而不仅仅是数字
- 如何使用正则表达式在var中发现的任何单词的末尾添加字符
- 如何在按键上向textArea添加字符
- 如何向父窗口的组件添加字符
- 如何在h2 innerhtml之前和之后添加字符
- 如何一个接一个地添加字符到输入字段,而不是在javascript中使用sth.value() = sth
- 向管理输入和文本区域添加字符计数
- 为foreach循环添加字符计数函数
- Jquery -在字符串的第一个字符之后添加字符
- NodeJs在一系列字符串之后添加字符
- 添加字符的 Javascript RegExp 对象