簡體   English   中英

具有三個文本框的日期驗證不適用於PDF(正在工作)

[英]Date validation not working for PDF with three text boxes (WAS WORKING)

我正在使用Adobe Acrobat XI Pro。 我在日期中使用三個文本框,其代碼如下:

var month = this.getField("DATE_MONTH").valueAsString;
var day = this.getField("DATE_DAY").valueAsString;
var year = this.getField("DATE_YEAR").valueAsString;
var date = month + "/" + day + "/" + year;
var test_date = new Date();
test_date.setDate(test_date.getDate());

if(date != test_date){
    app.alert("The entered value needs to be TODAY'S date in the format mm/dd/yyyy");
}

最初,此代碼有效-僅在選擇的日期不是今天的日期時拋出錯誤。 現在,無論選擇什么日期,我都會出錯。

可變日期是格式為m / d / y的字符串,而test_date是Date對象。 !=比較將強制將Date轉換為字符串,現在比較有效:

date != test_date.toString();

由於下一版ECMA-262要求Date.prototype.toString返回RFC 2822格式的字符串(例如,星期一,1995年12月25日13:30:00 GMT),所以大多數新的瀏覽器現在都在實現該格式。 RFC格式與m / d / y格式的字符串不匹配,因此比較結果始終為true,

例如

'12/25/1995' != 'Mon, 25 Dec 1995 13:30:00 GMT'

使用這些格式的任何日期都將始終為true。 有關答案,請參閱比較兩個日期與JavaScript

只是為了提供幫助,我對PDF中的ECMAScript一無所知,但是您可以執行以下操作:

var month = this.getField("DATE_MONTH").valueAsString;
var day = this.getField("DATE_DAY").valueAsString;
var year = this.getField("DATE_YEAR").valueAsString;

// Compare date time values with time set to 00:00:00
if (+new Date(year, month - 1, day) != new Date().setHours(0,0,0,0))

一元+會將Date轉換為數字,而setHours的返回值是新的時間值(也是一個數字),因此這兩個值都將被強制轉換為數字。 如果您想要更明確的說明,請考慮:

if (new Date(year, month - 1, day).getTime() != new Date().setHours(0,0,0,0))

 var d = new Date(); var day = d.getDate(); var month = d.getMonth() + 1; var year = d.getFullYear(); // Is today != today? console.log( +new Date(year, month - 1, day) != new Date().setHours(0,0,0,0)); // Is today != tomorrow? console.log( new Date(year, month - 1, day + 1).getTime() != new Date().setHours(0,0,0,0)); 

PS

這: test_date.setDate(test_date.getDate())沒什么用。 它只是將test_date的日期設置為已經具有的相同值。 ;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM