www.webdeveloper.com
Results 1 to 2 of 2

Thread: Live validation of textbox

  1. #1
    Join Date
    May 2010
    Posts
    2

    Live validation of textbox

    1st -> i am not good in englisch so sorry on start, but please try to understand me

    my problem:

    1. I want to do live validation of textbox
    2. User can write only number character. Allowed format is dddd,dd where d is number 0-9 with restricition
    2.1 Restriction example: if textbox has data 222,22 user cant put 0 on start string, so 0222,22 is no allowed
    3. This is do all on keypress
    4. My regular expression works good
    5. Where is problem? if textbox has for example data: 345,11 and user set cursor between 3 and 4, and then put some correct number for example 7 my script dont allowed this...user want now 3645,11 <-correct format but textbox has still 345,11 data .
    6. Like you see all problem is that i dont know in how position in string user put character
    field.value+String.fromCharCode(key)).
    i concatenate value with key pressed so my program think that new value is 345,117 and regular expression dont allowed this.please help me


    function validateKeyPress1(e,field) {
    var reg = /(^[1-9]{1}[0-9]{0,3},{1}[0-9]{0,2}$)|(^[1-9]{1}[0-9]{0,3}$)|(^[0]{1},{1}[0-9]{0,2}$)|(^[0]$)/;
    var key = (e.keyCode ? e.keyCode : e.which);

    var matchArray = (field.value+String.fromCharCode(key)).match(reg);
    if (matchArray == null && e.keyCode != 8) {

    return false;
    }
    else
    return true;
    }

  2. #2
    Join Date
    May 2010
    Posts
    2

    found but doesnt work on mozilla

    ok i found solution, but it works only on IE i want do work at least mozilla(higher prioryty) and opera too:/ Anyone could show what i should add/change to work in all browsers?

    function floatValidation(e, control) {
    if (e.keyCode == 44) {
    var patt1 = new RegExp("\\,");
    var ch = patt1.exec(control.value);
    if (ch == ",") {
    e.keyCode = 0;
    }
    }
    else if ((e.keyCode >= 48 && e.keyCode <= 57) || e.keyCode == 8)//Numbers or BackSpace
    {
    if (control.value.indexOf(',') != -1)//. Exisist in TextBox
    {
    var pointIndex = control.value.indexOf(',');
    var beforePoint = control.value.substring(0, pointIndex);
    var afterPoint = control.value.substring(pointIndex + 1);
    var iCaretPos = 0;
    if (document.selection) {
    if (control.type == 'text') // textbox
    {
    var selectionRange = document.selection.createRange();
    selectionRange.moveStart('character', -control.value.length);
    iCaretPos = selectionRange.text.length;
    }

    }

    if (iCaretPos > pointIndex && afterPoint.length >= 2) {
    e.keyCode = 0;
    }
    else if (iCaretPos <= pointIndex && beforePoint.length >= 4) {
    e.keyCode = 0;
    }
    }
    else//. Not Exisist in TextBox
    {
    if (control.value.length >= 4) {
    e.keyCode = 0;
    }
    }
    }
    else {
    e.keyCode = 0;
    }
    }
    function setCaretPosition(ctrl, pos) {
    if (ctrl.setSelectionRange) {
    ctrl.focus();
    ctrl.setSelectionRange(pos, pos);
    }
    else if (ctrl.createTextRange) {
    var range = ctrl.createTextRange();
    range.collapse(true);
    range.moveEnd('character', pos);
    range.moveStart('character', pos);
    range.select();
    }
    }

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles