SAMPLE0203

日時項目のフォーカスアウト

URLコピー

日時項目でFocusOutを実施するサンプルです。

日時項目でFocusOut機能を使用する際、通常項目で実行されるFocusOutとは異なるタイミングで
イベントが発火されるため、一部コードを修正する必要があります。

通常項目でFocusOut機能を使用する際は、入力ー>フォーカスアウトしたタイミングで、イベントが発火されるのに対し
日時項目では入力ー>フォーカスアウトー>日時マスク処理 の順になります。

正規表現を使って形式をチェックすることで、正常な日付が入力された際にのみイベントを発火させるように制御することが可能です。

画面イメージ
指定納期日と出荷実績日項目にて、フォーカスアウトした後の値が、nullの場合は、
受注番号または商品コードnullを代入し、フォーカスアウトした後の値が、正常な日付のフォーマットの場合は、
ND definedまたはSD definedを代入します。




開発のポイント

1)指定納期日
指定納期日項目に正常な値「2013/08/02」等が、入力されてフォーカスアウトした時のみ、イベント発火
var jyuNo = %1_JYUCYU_NO%;
var itemCd = %1_ITEM_CODE%;
var nokiDate = %1_NOKI_DATE%;

function isValidFormat(n) {
  /* 正規表現を使って形式をチェック */
  const regex_jp = /^\d{4}\/\d{2}\/\d{2}$/;
  const regex_en = /^\d{2}\/\d{2}\/\d{4}$/;
  /* TLN-783(Ver6.0.4)より英語環境だと日時形式が変わる */
  if( window.navigator.language == 'en-US' || window.navigator.language == 'en-GB') {
    return regex_en.test(n);
  } else {
    return regex_jp.test(n);
  }
}

if ( !isValidFormat(nokiDate.value) ) {
     jyuNo.value = "null" 
} else {
    jyuNo.value = "ND defined"
};




2)出荷実績日
出荷実績日項目に正常な値を入力せずに「2011/1_/__」等、途中でフォーカスアウトした場合でもイベント発火
var itemCd = %1_ITEM_CODE%;
var shipDate= %1_SHIP_DATE%;


if (shipDate.value == '') {
     itemCd .value = "null" 
} else {
    itemCd .value = "SD defined"
};

上記ロジックは機能設定画面>ブロック設定>項目情報>FOCUS OUTに記述します。