Javascript2009. 7. 15. 13:46

function sleep(milliseconds) {
 
var start = new Date().getTime();
 
for (var i = 0; i < 1e7; i++) {
   
if ((new Date().getTime() - start) > milliseconds){
     
break;
   
}
 
}
}

source: http://www.phpied.com/sleep-in-javascript/
Posted by Main()
Javascript2009. 3. 31. 10:51

텍스트박스에 숫자 입력시 3자리 마다 콤마(,)를 찍어야할 필요가 있을 경우,
단순 콤마만 찍기는 그다지 어렵지 않지만,
단순 자연수가 아닌 음수값(-)이나 소수(.)로 이루어진 숫자일 경우에는
정수 부분에만 3자리마다 콤마를 찍기에는 다소 난감하다.
거기다 콤마(,), 점(.), 음수(-)를 제외한 숫자만 입력 가능해야 하는 옵션은 필수일 것이다.

입력값(음수,소수 포함)의 정수부분에만 3자리 콤마를 자동으로 찍어주도록 구성해 보았다.


<script type="text/javascript">
String.prototype.comma = function() {
    tmp = this.split('.');
    var str = new Array();
    var v = tmp[0].replace(/,/gi,'');
    for(var i=0; i<=v.length; i++) {
        str[str.length] = v.charAt(v.length-i);
        if(i%3==0 && i!=0 && i!=v.length) {
            str[str.length] = '.';
        }
    }
    str = str.reverse().join('').replace(/\./gi,',');
    return (tmp.length==2) ? str + '.' + tmp[1] : str;
}

function onlyNum(obj) {
    var val = obj.value;
    var re = /[^0-9\.\,\-]/gi;
    obj.value = val.replace(re, '');
}
</script>

<input type="text" onkeyup="onlyNum(this);this.value=this.value.comma();" />

'Javascript' 카테고리의 다른 글

sleep() in JavaScript  (0) 2009.07.15
자바스크립트 폼 리셋  (0) 2009.03.31
자바스크립트 랜덤 문자열 생성  (0) 2009.03.04
Posted by Main()
Javascript2009. 3. 31. 10:28
<form id="form1">의 폼 리셋이 필요할 경우 아래와 같은 방법으로 리셋하면 간단히 해결 할 수 있다.

document.getElementById('form1').reset()
document.forms[0].reset();
document.forms['forms1'].reset();
document.forms.form1.reset();


그런데 이 방법이 먹히질 않거나
필요한 요소만 골라서 리셋을 해야할 경우가 있다.

리셋이 필요한 elememt를 골라서 리셋하려면,
if(document.form1.elements[index].type == 'typename')
일일히 찾아서 지정할 수 밖에 없다.



<form id="form1">
...
</form>
<button onclick="clearFields();">Clear All</button>

<script type="text/javascript">
function clearFields() {
    var frm = document.getElementById('form1');
    var em = frm.elements;
    frm.reset();
    for(var i=0; i<em.length; i++) {
        if(em[i].type == 'text') em[i].value = '';
        if(em[i].type == 'checkbox') em[i].checked = false;
        if(em[i].type == 'radio') em[i].checked = false;
        if(em[i].type == 'select-one') em[i].options[0].selected = true;
        if(em[i].type == 'textarea') em[i].value = '';
    }
    return;
}
</script>



input type="text", input type="checkbox", input type="radio" 등은
각각의 type명이 type속성과 동일하지만,
골때리게도 <select>의 타입명은 select-one 이다.
Posted by Main()
Javascript2009. 3. 4. 16:51

가끔 의미없는 랜덤문자열이 필요할때가 있는데 Timestamp 같은 날짜가 관련된것 보다는
정말 아무런 의미도 없는 무작위 문자열을 필요한 길이 만큼 생성해서 사용할 수 있도록 구현해 보았다.


function RndStr() {

    this.str = '';
    this.pattern = /^[a-zA-Z0-9]+$/;

    this.setStr = function(n) {
        if(!/^[0-9]+$/.test(n)) n = 0x10;
        this.str = '';
        for(var i=0; i<n-1; i++) {
            this.rndchar();
        }
    }

    this.setType = function(s) {
        switch(s) {
            case '1' : this.pattern = /^[0-9]+$/; break;
            case 'A' : this.pattern = /^[A-Z]+$/; break;
            case 'a' : this.pattern = /^[a-z]+$/; break;
            case 'A1' : this.pattern = /^[A-Z0-9]+$/; break;
            case 'a1' : this.pattern = /^[a-z0-9]+$/; break;
            default : this.pattern = /^[a-zA-Z0-9]+$/;
        }
    }

    this.getStr = function() {
        return this.str;
    }

    this.rndchar = function() {
        var rnd = Math.round(Math.random() * 1000);

        if(!this.pattern.test(String.fromCharCode(rnd))) {
            this.rndchar();
        } else {
            this.str += String.fromCharCode(rnd);
        }
    }
}

var rndstr = new RndStr();

rndstr.setType(0); //대문자+소문자+숫자
rndstr.setStr(32); //32자리
document.write(rndstr.getStr() + "<br />");

rndstr.setType('a'); //소문자
rndstr.setStr(16); //16자리
document.write(rndstr.getStr() + "<br />");

rndstr.setType('A'); //대문자
rndstr.setStr(16); //16자리
document.write(rndstr.getStr() + "<br />");

rndstr.setType('1'); //숫자
rndstr.setStr(10); //10자리
document.write(rndstr.getStr() + "<br />");

'Javascript' 카테고리의 다른 글

sleep() in JavaScript  (0) 2009.07.15
자바스크립트 숫자 세자리마다 콤마(,) 자동 찍기  (0) 2009.03.31
자바스크립트 폼 리셋  (0) 2009.03.31
Posted by Main()