1 つは formatSSN、もう 1 つは formatPhoneNo と呼ばれる 2 つの関数を作成します。 両方の関数を「isfprimerlib.js」という名前のファイルに入れます。 ISF コーディングとベスト プラクティスで説明したように、このファイルは、アプリケーション サーバの RequestCenter.war ディレクトリ下の任意のディレクトリに存在する可能性があります。慣例では、ISF ライブラリは「isfcode」という名前のディレクトリに配置されます。
Script Manager 内の JavaScript ファイルに、ライブラリ参照を作成します。 [ライブラリ(Libraries)] タブで、サービスにアタッチされる JavaScript 関数のライブラリを必ず指定してください。
結果のコードは次のとおりです。
function getOnlyDigits (inValue)
{
var outValue = '';
var aChar;
for (i=0; i < inValue.length; i++)
{
aChar = inValue.charAt (i);
if ('0' <= aChar && aChar <= '9')
{
outValue = outValue + aChar;
}
}
return outValue;
}
function testValueLength (inValue, inLen, obField, fieldName)
{
if ((inValue.length > inLen) || (inValue.length < inLen))
{
alert (fieldName + ' must have ' + inLen + ' digits and it has ' + inValue.length);
eval('serviceForm.'+obField).setFocus(true);
return false;
}
return true;
}
function formatSSN (obField)
{
var SSNString = getOnlyDigits (eval('serviceForm.'+obField).getValue()[0]);
if (testValueLength (SSNString, 9, obField, 'SSN'))
{
eval('serviceForm.'+obField).setValue([SSNString.slice (0,3) +
'-' + SSNString.slice (3,5) + '-' + SSNString.slice (5)]);
}
}
function formatPhoneNo (obField)
{
var phoneString = getOnlyDigits (eval('serviceForm.'+obField).getValue()[0]);
if (testValueLength (phoneString, 10, obField, 'Phone Number'))
{
eval('serviceForm.'+obField).setValue(['(' + phoneString.slice (0,3) + ') '
+ phoneString.slice (3,6) + '-' + phoneString.slice (6)]);
}
For the field SSN create a function called Customer_SSN_onChange
that calls formatSSN
:
Customer_SSN_onChange ()
{
formatSSN('Customer.SSN');
}
[PhoneNo] フィールドに対して、フィールドの値が変更された場合に formatPhoneNo を呼び出す、Customer_PhoneNo_onChange と呼ばれる別の関数を作成します。 単に別の実装方法を示すため、これらの関数はフィールドの名前を渡して、「値によって」ではなく「参照によって」機能します。
Customer_PhoneNo_onChange ()
{
formatPhoneNo ('Customer.PhoneNo');
}
それぞれのフィールドの値が変更される場合は、両方の関数が呼び出されます。