進階 XFA picture 子句
啟用 TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript,即可透過隨附的 QuickJS 引擎在 FormCalc 事件、calculate 與 validate 腳本中使用這些 picture
Format(picture, value) 產生顯示文字,Parse(picture, text) 產生標準值;地區設定選擇、引號字面文字與替代寫法遵循FormCalc 地區設定與 picture 函式
數值精確度與科學記號
| 符號 | 行為 |
|---|---|
E | 在尾數之後輸出帶正負號的十進位指數;整數與小數的位數位置決定尾數精確度,並在輸出指數前先完成進位捨入 |
8 | 保留所提供十進位文字表明的小數精確度,包括結尾的零;沒有小數位時省略小數點,而連續 8 個符號可以保留比自身長度更多的小數位 |
科學記號尾數最多 15 個位數位置;指數大小與十進位展開以 10000 為界,非有限值會產生空文字
精確度 picture 會保留小數位置前後的引號字面文字;百分比縮放直接在原始十進位文字上移位,不會因二進位浮點轉換而遺失結尾零
當表達的精確度很重要時,請傳入十進位字串;JavaScript 數值在格式化之前就已經歷二進位浮點轉換
Format("num{99.999E}", 12345) // 12.345E+3
Parse("num{99.999E}", "12.345E-2") // 0.12345
Format("num{zzz,zz9.8}", "12345.0000") // 12,345.0000
Parse("num{zz9.8}", "12.3400") // 12.3400
Format("num{zz9.8%}", "0.1250") // 12.50%
序數與週日期
| 符號 | 行為 |
|---|---|
J、JJJ | 年內第幾天,1 到 366;JJJ 補足三位數,解析時會檢查閏年 |
E | 數字星期別,1 為週日到 7 為週六;EEE 與 EEEE 仍使用地區設定的縮寫與完整星期名稱 |
e | ISO 星期別,1 為週一到 7 為週日 |
WW | ISO 週別,01 到 53;第 01 週包含 1 月 4 日,而這個 picture 中的年份是 ISO 週年 |
w | 月內週別,0 到 5,從週日算起;第一週必須至少含該月的四天 |
解析序數或週日期會回傳對應的 ISO 曆日期;互相矛盾的日、月、星期或週值會回傳空文字
四位數的早年直接建構,不做 JavaScript 的世紀調整,包括 0000 到 0099 年;歷史替代紀元仍不在這些 picture 的範圍內
Format("date{YYYY-JJJ}", "2024-02-29") // 2024-060
Parse("date{YYYY-WW-e}", "2020-53-5") // 2021-01-01
Format("date{w}", "2004-07-03") // 0
更多時鐘變體
k 與 kk 表示同一 meridiem 內 0–11 的小時;K 與 KK 表示一天內 1–24 的小時,24 代表午夜
搭配 k 時鐘使用 A 可區分 AM 與 PM;小寫 z 輸出不帶冒號的 ISO 偏移,zz 帶冒號,大寫 Z 則輸出 GMT 或帶明確偏移的 GMT
全域 picture 符號
| 符號 | 輸入解析 | 輸出格式化 |
|---|---|---|
? | 消耗一個 Unicode 碼位 | 產生一個空格 |
* | 消耗零個以上可斷行的空白字元 | 產生一個空格 |
+ | 消耗一個以上可斷行的空白字元 | 產生一個空格 |
這些符號可用於日期、時間、日期時間、數字與文字 picture;加引號的符號仍是字面字元,增補 Unicode 字元算一個字元,不換行空格不列入空白比對
複合輸入解析
複合的日期與時間子句會合併成標準 ISO 日期時間文字;同一值的重複表示必須一致,且字面分隔符會在接受輸入前先行檢查
重複的純量子句必須產生相同的標準數字或文字;不相容的類別組合、互相矛盾的值、未消費完的輸入或多個不同的標準結果都會產生空文字
複合解析允許 64 個部分、8192 個 UTF-16 輸入碼元與 8192 次解析嘗試,同時共用執行階段的操作與經過時間預算;超過這些限制會讓事件交易失敗
Parse("date{YYYY-MM-DD} time{HH:MM:SS}", "2024-02-29 12:34:56")
// 2024-02-29T12:34:56
Parse("date{YYYYMMDD}time{HHMMSS}", "20240229123456")
// 2024-02-29T12:34:56
執行階段行為與目前邊界
計算欄位與事件使用同一套實作與地區設定中繼資料;失敗的腳本會還原文件值與已提交的 JavaScript 狀態,而已儲存的 XDP 資料保留成功的結果
替代紀元曆法、表意與全形表示、僅顯示用的在地化符號與完整的分組原則,仍是另外的目標
交易、重播與操作預算行為詳見互動式 XFA Widget 執行環境