JavaScriptを使用して2つの日付を差し引いています。日付の値はフォームフィールドから来ます。フォームのWordPressサイトでFormidable Proを使用しています。Javascriptを使用してフォームエントリから2つの日付を差し引く
このフォームは、企業が税金を支払うためのものです。税金は毎月20日に支払われます。時にはビジネスが遅れて税金を支払うこともあるので、フォームの冒頭で税金を払っている月を指定します。
最初の日付は現在の日付です。 mm/dd/yyyyの形式でFormidableショートコードを使用してフォームフィールドに入力されます。
2番目の日付は、年と月のエントリから計算されます。これらの値は「20」で連結され、税金を払っている月の20日の完全な日付値を形成します。
20日までに税金を納めている場合、罰金はありません。それが20日後なら、ペナルティがあります。私は、日付を差し引いて、差がゼロより大きいことに基づいて支払いが遅れているかどうかを判断し、差額がフォームフィールドに入力されるようにしたいと考えています。
これは私が使用しているコードです。差分値を計算してフォームに戻す方法をコメントした箇所が表示されます。
以下のコードでは、スクリプトは「NaN」エラーを差分フィールドに返します。
なぜですか?エラーを修正してその違いを報告するにはどうすればよいですか?私が知る必要があるのは、負の値か> =ゼロの場合だけです。
<script type="text/javascript">
jQuery(document).ready(function($){
$('#field_21nfg, #field_o1ns5').change(function(){
var Year = $("#field_21nfg").val();
var Month = $("#field_o1ns5").val();
$("#field_tm25b").val(Month+'/'+'20'+'/'+Year);
// var Due = $("#field_tm25b5").val();
// var Today = $("#field_1pjvu").val();
//
// var dDue = new Date('Due');
// var dToday = new Date('Today');
// var diff = Math.floor(dDue - dToday);
// $("#field_smmyr").val(diff);
var oneDay = 24*60*60*1000;
var Today_str = $("#field_1pjvu").val(); // E.g., "mm/dd/yyyy";
var Today_dt = new Date(parseInt(Today_str.substring(6), 10), // Year
parseInt(Today_str.substring(0, 2), 10) - 1, // Month (0-11)
parseInt(Today_str.substring(3, 5), 10)); // Day
var Due_str = $("#field_tm25b5").val(); // E.g., "mm/dd/yyyy";
var Due_dt = new Date(parseInt(Due_str.substring(6), 10), // Year
parseInt(Due_str.substring(0, 2), 10) - 1, // Month (0-11)
parseInt(Due_str.substring(3, 5), 10)); // Day
//var diff = Math.floor(Due_dt-Today_dt);
var diffDays = Math.round(Math.abs((Today_dt.getTime() - Due_dt.getTime())/(oneDay)));
$("#field_smmyr").val(diffDays);
});
});
</script>
「1pjvu」今日の日付フィールド
「21nfg」のキーは、ユーザによって与えられた請求期間の年の値フィールドです。
"o1ns5"は、ユーザーが指定した請求期間フィールドの月の値フィールドです。
「tm25b」は連結期日です。上記のフィールドで指定した月の20日目です。
"smmyr"は差分フィールドのキーです。
UPDATE 2016年4月19日
あなたの助けありがとうございました。あなたが言うことができない場合、私はJSを知らないが、私が行くように私の方法をハッキングしています。多くの不安を抱えた後、私はそれを働かせました。最終的なコードは次のとおりです。
<script type="text/javascript">
jQuery(document).ready(function($){
$('#field_21nfg, #field_o1ns5').change(function(){
var Year = $("#field_21nfg").val(); //Collect value from Filing Period Year form field
var Month = $("#field_o1ns5").val();//Collect value from Filing Period Month form field
var Day = 20; //Due date for filing tax return
var DueDate = Month+'/'+Day+'/'+Year;
$("#field_tm25b").val(DueDate); //Populate "Due Date" form field with due date generated above
function parseMDY(s) {
var b = s.split(/\D/);
return new Date(b[2], b[0]-1, b[1]);
}
var Today = $("#field_1pjvu").val(); //Collect Value from Today's Date form field
if (DueDate > Today) {
$("#field_smmyr").val(1); //Returns true/1 for on or before due date
} else {
$("#field_smmyr").val(0); //Returns false/0 for after due date
}
});
});
</script>
あなたは見つけるためにあなたのコードをデバッグしようとしていますすべての変数の値が期待どおりであれば? – Ramin
質問を問題のコードだけにすると、はるかに簡単になります。だから、すべてのjQueryを取り除き、いくつかのテスト値と期待される出力で関数をポストするだけです。 – RobG