tags:

views:

37

answers:

1

I have a function with the name MakeInitialCapital. I want to supply control name as an argument and the text in that control must be converted to Initial Capital.

How to modify this Javascript code:

function MakeInitialCapitalControl(controlName)
{
 TextInControl = getElementByID(controlName).value; 
 return str.toLowerCase().replace(/\b[a-z]/g, cnvrt);
function cnvrt() {
    return arguments[0].toUpperCase();
}

Edited:

One more thing, if the text already has Intials Capital, make it lowercase.

+3  A: 

Assuming the rest of your code works, you need to assign the value, rather than returning it:

function MakeInitialCapitalControl(controlName)
{
    var ctrl = getElementByID(controlName);
    ctrl.value = ctrl.value.toLowerCase().replace(/\b[a-z]/g, function {
        return arguments[0].toUpperCase();
    });
}

EDIT

As for the request in your edit... that's a rather strange request. Are you sure you want that in the same function? It'll do pretty much the exact opposite of what the function name implies. But oh well:

function MakeInitialCapitalControl(controlName)
{
    var ctrl = getElementByID(controlName);

    if(/^[A-Z]/.test(ctrl.value)) {
        ctrl.value = ctrl.value.toLowerCase();
        return;
    }        

    ctrl.value = ctrl.value.toLowerCase().replace(/\b[a-z]/g, function {
        return arguments[0].toUpperCase();
    });
}
David Hedlund