2011-04-07 7 views
0

2 개의 텍스트 상자가 있습니다. 당신이 그것을 떠날 때 항상 4 자릿수를 포함해야 하나. 당신이 그것을 떠날 때 항상 10 자리를 포함해야 하나.자바 스크립트 알고리즘을 사용하여 텍스트 상자에 숫자 추가

자바 스크립트가 필요합니다. 텍스트 상자 중 하나의 블러에서 blured 텍스트 상자의 글자 수를 계산하는 알고리즘을 트리거해야하며 텍스트 상자에 특정 숫자가 포함되어 있지 않으면 x 값이 추가됩니다. 텍스트 상자에 특정 숫자가 포함될 때까지 숫자 앞에 0이옵니다.

내가 알고있는 것은 텍스트 상자에서 .length를 확인해야한다는 것입니다. 그러나 나중에 기능이 나를 괴롭히는 것입니다.

HTML

<asp:TextBox ID="txt1" runat="server" MaxLength="4"></asp:TextBox> 
<asp:TextBox ID="txt2" runat="server" MaxLength="10"></asp:TextBox> 

자바 스크립트

<script src="jquery-1.4.4.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    var $reg = $('#txt1'); 
    var $acc = $('#txt2'); 

    $reg.blur(function() { 
     if($reg.length < 4) 
     { 
      var $miss = 4 - parseFloat($reg.length); 
     } 
    }); 

    $acc.blur(function() { 
     if($acc.length < 10) 
     { 
      var $miss = 10 - parseFloat($acc.length); 
     } 
    }); 
}); 
</script> 

답변

2

여기에 간단한 대안입니다.

2

각 $ 미스 할당 아래에이를 넣습니다.

var padding = ''; 

for(var i = 0; i<$miss; i++) { 
    padding += '0'; 
} 

$(this).val(padding + $(this).val()); 
+0

왼쪽으로 칠해야 할 때 문자열을 오른쪽으로 채 웁니다. –

+0

Oop, 오독. 해결할 답변을 수정했습니다. – EMMERICH

+0

이것은 완벽하게 작동합니다. 감사합니다. – diceler

1

숫자 앞에 필요한 0을 채우려면 문자열 반복 기능을 만드십시오. 이 스레드에서 오는

코드 : Repeat String - Javascript

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

는 또한, 당신은 길이 속성에서는 parseFloat를 사용할 필요가 없습니다, 당신은 계산을 위해 어쨌든 int 값이 필요합니다.

$reg.blur(function() { 
     $reg.val("0".repeat(4 - $reg.val().length) + reg.val() + ""); 
}); 

코드 검증되지 않은 있지만, 올바른 방향을 가리켜 야 :

함께 퍼팅.

$reg.blur(function() { 
    while(this.value.length < 4) 
    { 
     this.value = '0' + this.value; 
    } 
}); 

이 jsfiddle에 대한 조치 here에서 볼 :

+0

답변으로 표시된 사람을 사용하여 끝났지 만 귀하의 대답은 왜 계산기가 빼기에서 올바른 번호를 반환하지 않았는지를 파악하는 데 도움이되었습니다. 그래서 +1. 도와 주셔서 감사합니다. – diceler

관련 문제