2014-05-23 3 views
0

스크립트는 이미 사용자의 입력에 따라 스크립트의 너비를 계산할 수 있으며 문자열의 너비도 계산할 수 있습니다. 이제 내가 성취하고자하는 것은 사용자가 "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(); 


    } 

}); 


}); 
+0

문제 설명이 매우 모호하고 질문은 좀 더 많은 정보를 사용할 수 있습니다. – Chris

+1

'return isTrue'은 (는) 무엇을 반환합니까? 그것은 어떤 기능도 아닙니다. – Barmar

+0

반환 false 인 경우 제거하지 못했습니다. 죄송합니다. 코드를 업데이트했습니다. – user3627265

답변

0

$(this).repeat(6).textWidth()this.value.repeat(6).textWidth()이어야합니다. $(this)은 문자열이 아닌 jQuery 객체입니다. 당신은 일반 문자열에서 작동하는 방법을 정의하려면

는, 당신은 jQuery를 방법으로 그것을 정의하지의 String 프로토 타입에 추가해야합니다

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

오류가 발생했습니다. 잡히지 않은 TypeError : undefined가 반복적 인 함수 입니다. 내가 만든 기능. – user3627265

+0

업데이트 된 답변보기 – Barmar

+0

jsfiddle을 (를) 확인하시기 바랍니다. 나는 그것을 여기에서하려고 노력했다. 그러나 어떻게 든 그것은 일하지 않는다. http://jsfiddle.net/r6Df4/1/ – user3627265