Javascript:设置标签文本

Javascript:设置标签文本,javascript,Javascript,我正在尝试为具有以下格式的多个字段的表单实现一个通用函数 <label id="LblTextCount"></label> <textarea name="text" onKeyPress="checkLength(this, 512, LblTextCount)"> </textarea> JS $(文档).ready(函数(){ $('textarea[name=text]')。按键(函数(e){ 校验长度($(this),512,$('L

我正在尝试为具有以下格式的多个字段的表单实现一个通用函数

<label id="LblTextCount"></label>
<textarea name="text" onKeyPress="checkLength(this, 512, LblTextCount)">
</textarea>
JS

$(文档).ready(函数(){
$('textarea[name=text]')。按键(函数(e){
校验长度($(this),512,$('LblTextCount');
}).focus(函数(){
校验长度($(this),512,$('LblTextCount');
});
});
函数检查长度(obj、maxlength、label){
var charsleft=(maxlength-obj.val().length);
//绝不允许超过规定的限制
if(charsleft<0){
obj.val(obj.val().substring(0,maxlength-1));
}
//将charsleft的值设置到标签中
$(标签).html(charsleft);
}

InnerHTML应为InnerHTML:

document.getElementById('LblAboutMeCount').innerHTML = charsleft;
您应该使用jQuery将
checkLength
函数绑定到textarea,而不是以内联方式或侵入式方式调用它:

$(document).ready(function() {
    $('textarea[name=text]').keypress(function(e) {
        checkLength($(this),512,$('#LblTextCount'));
    }).focus(function() {
        checkLength($(this),512,$('#LblTextCount'));
    });
});
您可以通过使用更多jQuery来整理checkLength,我不会将“object”用作形式参数:

function checkLength(obj, maxlength, label) {
    charsleft = (maxlength - obj.val().length);
    // never allow to exceed the specified limit
    if( charsleft < 0 ) {
        obj.val(obj.val().substring(0, maxlength-1));
    }
    // I'm trying to set the value of charsleft into the label
    label.text(charsleft);
    $('#LblAboutMeCount').html(charsleft);
}
函数检查长度(obj、maxlength、标签){
charsleft=(maxlength-obj.val().length);
//绝不允许超过规定的限制
if(charsleft<0){
obj.val(obj.val().substring(0,maxlength-1));
}
//我试图将charsleft的值设置到标签中
标签文本(charsleft);
$('LblAboutMeCount').html(charsleft);
}
因此,如果应用上述内容,可以将标记更改为:

<textarea name="text"></textarea>

对于动态方法,如果标签始终位于文本区域的前面:

$(object).prev("label").text(charsleft);

你做错了几件事。解释遵循更正后的代码:

<label id="LblTextCount"></label>
<textarea name="text" onKeyPress="checkLength(this, 512, 'LblTextCount')">
</textarea>

是否有一种优雅的方法可以将checkLength()绑定到onFocus onPaste,而不复制$(document.ready(function())函数的内容?@MrG-是的,请参见我的编辑。也不是因为粘贴事件不是跨浏览器的。Tkx karim79,它在单独的窗口(下面列出的所有浏览器)中工作正常,但在JQuery UI选项卡中失败,控制台中没有任何错误(FF/Safari/Opera失败,即工作正常)。你有什么想法吗?非常非常感谢@MrG-我打赌这些是ajax标签。尝试将$('textarea[name=text]').keypress(函数(e){替换为$('textarea[name=text]').live(“keypress”,函数(e){。。。
<textarea name="text"></textarea>
$(object).prev("label").text(charsleft);
<label id="LblTextCount"></label>
<textarea name="text" onKeyPress="checkLength(this, 512, 'LblTextCount')">
</textarea>
function checkLength(object, maxlength, label) {
    charsleft = (maxlength - object.value.length);

    // never allow to exceed the specified limit
    if( charsleft < 0 ) {
        object.value = object.value.substring(0, maxlength-1);
    }

    // set the value of charsleft into the label
    document.getElementById(label).innerHTML = charsleft;
}
var charsleft = ....