重复字符串并计算字符串的宽度

时间:2014-05-23 02:13:39

标签: jquery css

脚本已经可以根据用户的输入计算脚本的宽度,也可以计算字符串的宽度。现在我想要实现的是,当用户重复字符串时,例如" A",然后字符串" A"重复6次,所以它将是" AAAAAA",这里是问题发生的地方,我在重复字符串时所做的功能不起作用。基本上,字符串将重复,让我们说6次,然后计算字符串的宽度。对此有何想法?

$.fn.textWidth = function(text, font) {

    var fontsize = $('#fntSize').val();

    if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body);
    $.fn.textWidth.fakeEl.text(text || this.val() || this.text()).css({'font-size':fontsize+'px'});
    return $.fn.textWidth.fakeEl.width();
};

$.fn.repeat = function( num )
{
    return new Array( num + 1 ).join( this );
}

$("[name='txtLine[]']").each(function(){

    $(this).css({"background-color":"#fff"}).siblings('span.errorMsg').text('');;



    if (!this.value.length) 
    {
        $(this).focus();
        $(this).css({"background-color":"#f6d9d4"}).siblings('span.errorMsg').text('Please add a word.');
        event.preventDefault();
    }


    if($(this).repeat(6).textWidth() >= 490)
    {
        alert("Too long");
        event.preventDefault();


    }

}); 


});

1 个答案:

答案 0 :(得分:0)

$(this).repeat(6).textWidth()应为this.value.repeat(6).textWidth()$(this)是一个jQuery对象,而不是字符串。

如果你想定义一个对普通字符串进行操作的方法,你需要将它添加到String原型中,而不是将它定义为jQuery方法:

String.prototype.repeat = function( num )
{
    return new Array( num + 1 ).join( this );
}