View Single Post
Old 01-06-2013, 04:14 AM   PM User | #10
AndrewGSW
Senior Coder

 
Join Date: Apr 2011
Location: London, England
Posts: 2,120
Thanks: 15
Thanked 354 Times in 353 Posts
AndrewGSW will become famous soon enough
Sorry, I got carried away

Code:
var regexes = [ /^(\d{4})-(\d{4})$/, /^(\d{2})-(\d{4})-(\d{4})$/ ];
// the user can push() new regex into this array.

function testPhones(elems) {
    // Returns an array, possibly of just one element.
    // The array will have the same size as elems.length and will contain:
    // -1 if that element fails all tests, -2 if there is nothing to test,
    // or the index (0, 1, 2, etc.) of the regex that it met.
    
    var phoneResults = [], regLen = regexes.length, elLen = elems.length;
    phoneResults.passed = true;
    for (var i = 0; i < elLen; i++) {
        phoneResults[i] = -1;
        for (var j = 0; j < regLen; j++) {
            var theVal = elems.eq(i).val() || elems.eq(i).text();
            if (!theVal) {      // no phone number/blank
                phoneResults[i] = -2;
                phoneResults.passed = false;    // at least one blank
                break;
            } else if ( regexes[j].test(theVal) === true ) {
                phoneResults[i] = j;
                break;
            }
        }
        if (phoneResults[i] == -1) {
            phoneResults.passed = false;    // at least one fail
        }
    }
    return phoneResults;
}

var testThese = testPhones($('.number'));
if (testThese.passed) {
    alert('They all passed!');
}
var lElems = $('.number').length;

for (var i=0; i < lElems; i++) {
    if (testThese[i] >= 0) {
        alert('Element ' + i + ' passed regex: ' + regexes[testThese[i]]);
    } else if (testThese[i] == -1) {
        alert('Element ' + i + ' failed all tests.');
        // display an error message next to the input?
    } else { // -2
        alert('Element ' + i + ':nothing to test!');
    }
}
but I haven't tested yet. Please feel free to ignore any of this - I won't be upset.

Andy.
__________________
"I'm here to save your life. But if I'm going to do that, I'll need total uninanonynymity." Me Myself & Irene.
Validate your HTML and CSS

Last edited by AndrewGSW; 01-06-2013 at 11:50 PM.. Reason: Changed failed to passed
AndrewGSW is offline   Reply With Quote
Users who have thanked AndrewGSW for this post:
xelawho (01-07-2013)