0

ユーザーがテキストを入力したときにテキストを検証するonKeyPressイベントを作成し、次にいくつかのフィールドからタブを押してテキストを検証し、何も入力されていないか間違った値が入力されている場合はエラーを表示してユーザーに通知し、フォーカスをフィールドに戻す必要があり、ユーザーはフィールドのヘルプ ボタン以外の次のフィールドには移動できません。

<jade:input type="text" name="dtxtDesigCd" 
    value="" size="10" maxlength="8" 
    classname="input" disabledclass="disabled-input" style="color: black"  
    datasource="dsDesigHourDetail:desigCode"
    onkeypress= "checkDesignation(this, event);">
</jade:input> 

また、カスタム JSP タグ「PickList」もあります。これは基本的に、関連フィールドのデータベースからのヘルプを使用してモーダル ウィンドウを表示するボタンであり、データベースから選択したレコードは、ヘルプ ウィンドウからの選択後に JSP のテキスト フィールドに表示されます。

以前のベンダーは変更された SOFIA フレームワークを使用していたため、コードを保守する必要があります。以前のコードの問題は、onkeypress の代わりに onblur を使用していたため、このボタンをダブルクリックしてヘルプを取得する必要があり、エラーが発生し続けるため、何度も試行する必要があったことでした。

onblur を使用した以前のコードは

    onblur="setValue('DESIGNATION');" onkeyup="capitalize(this);"

これは現在置き換えられています

    onkeypress= "checkDesignation(this, event);">

JSP のヘルプ ボタン/PickList のコードは次のとおりです。

<rap:pickfromlist name="picklistDesignation" datasource="dsDesigHourDetail" 
    pflheading="Designation Details" focusfield="dtxtDesigCd"
    pflcolumnsdesc="Designation Code, Description" 
    fieldlist="distinct emp_desig_cd, emp_desig_desc " 
    lookuptable="pmm_designation" orderby="emp_desig_cd"
    targetproperty="desigCode, designation" 
    whereclause=" executive_post='N' and crew_flg = 'N'" /> 

このフィールドでは、指定の説明は、選択リストから選択されるか、フォームの非表示変数アクションを介してサーバーに渡された値を送信する setValue メソッドを介してフォームが送信され、フォームが送信された後にキャプチャされます。

<jade:input type="text" name="dlblDesigDesc" value="" size="50" 
    classname="labeltext" style="color: black" 
    datasource="dsDesigHourDetail:designation" enabled="False">
</jade:input>

checkDesignation(obj, evt) は次のように定義されます。

function checkDesignation(obj, evt) {
    var evt = (evt) ? evt : (window.event) ? event : null;
    if (evt) {
        var len = TrimString(obj.value).length;
        alert("Designation : " + obj.value);
        if (evt.keyCode == 9 && len >= 0) {
            if (len == 0) {
                setErrMessage('Designation must be entered and not blank');
                document.forms[0].htmlPageTopContainer_pageForm_detailDesigHourForm_dtxtDesigCd.focus();
                document.forms[0].htmlPageTopContainer_pageForm_detailDesigHourForm_dtxtDesigCd.value = '';
                setValue('DESIGNATION');
                return false;
            } else {
                capitalize(obj);
                setValue('DESIGNATION');
                return true;
            }
        }
    }
} 
4

1 に答える 1