To try this input box, copy paste the code below and save as test.html and then open it with a browser, or use the "Try Me" section on the right side bar of this blog.
<html> <script type="text/javascript"> function format(fieldName) { decSeparator = '.'; thousandSeparator = ','; field = document.getElementById(fieldName); caret = getCaretPos(field); newValue = ''; oldValue = ''; sign = ''; decimal = decSeparator + '00'; for (i = 0; i < field.value.length; i++) { if (field.value.charAt(i) == '-') { sign = '-'; } else if (field.value.charAt(i) == decSeparator) { decimal = decSeparator; for (j = i+1; j < i+3; j++) { if (field.value.charAt(j).match('[0-9]') != null) { decimal += field.value.substr(j, 1); } } break; } else if (field.value.charAt(i).match('[0-9]') != null) { oldValue += field.value.charAt(i); } else if (field.value.charAt(i) == thousandSeparator) { caret--; } } for (i = 0; i < oldValue.length; i++) { newValue += oldValue.charAt(i); if ((i != oldValue.length - 1) && ((oldValue.length - i) % 3 == 1)) { newValue += thousandSeparator; caret++; } } if (newValue != '') { field.value = sign + newValue + decimal; } setCaretPos(field, caret); } function insertAtCaret(obj, text) { if(document.selection) { obj.focus(); var orig = obj.value.replace(/\r\n/g, "\n"); var range = document.selection.createRange(); if(range.parentElement() != obj) { return false; } range.text = text; var actual = tmp = obj.value.replace(/\r\n/g, "\n"); for(var diff = 0; diff < orig.length; diff++) { if(orig.charAt(diff) != actual.charAt(diff)) break; } for(var index = 0, start = 0; tmp.match(text) && (tmp = tmp.replace(text, "")) && index <= diff; index = start + text.length ) { start = actual.indexOf(text, index); } } else if(obj.selectionStart) { var start = obj.selectionStart; var end = obj.selectionEnd; obj.value = obj.value.substr(0, start) + text + obj.value.substr(end, obj.value.length); } if(start != null) { setCaretTo(obj, start + text.length); } else { obj.value += text; } } function setCaretPos (obj, pos) { if (obj.selectionStart) { obj.focus(); obj.setSelectionRange(pos, pos); } else if (document.selection) { var range = obj.createTextRange(); range.move("character", pos); range.select(); } } function getCaretPos(obj) { if (typeof obj.selectionStart != 'undefined') return obj.selectionStart; else if (document.selection) return Math.abs(document.selection.createRange().moveStart('character', -1000000)); } </script> Try Me!!!! <br/> <input name="tryMe" id="tryMe" type="text" value="" onkeyup="format('tryMe');" onfocus="format('tryMe')" /> </html>
0 comments: (+add yours?)
Post a Comment