1

私はこのコードjsFiddleを持っています。私が達成しようとしていることは次のとおりです。ユーザーがダイアログ内の「OK」ボタンをクリックすると、「field1」の日付が「field2」よりも後かどうか、つまり現在の期間が前の期間よりも後かどうかをコードで計算する必要があります (そうあるべきです)。その場合は、アクションを続行し、テキスト ボックスにデータを入力してダイアログを閉じます。そうでない場合はいつでも、選択が無効であることをユーザーに警告したいと思います (Previous は Current の後に来ることはできません)。日付の計算に問題はありません (プラグインの date.js を使用すると十分に簡単になります)。この条件をどこに含めるかを判断しようとすると問題が発生します。コードを自由に変更して、結果をここに投稿してください。ありがとう。

ダイアログを閉じる直前にコードを実行する必要があると感じていますが、そのための適切な条件を取得できません。たとえば、次のようになります。

//code up to here handles 'if's and 'else's
var currentPeriod = $("input#field1").val()
var previousPeriod = $("input#field2").val()

 d1 = Date.parse(currentPeriod);
 d2 = Date.parse(previousPeriod); 

if((Date.compare(d1,d2))=='1')
{
  $(this).dialog("close");
 }
else
  {
   alert("Invalid date range");
 }
4

1 に答える 1

1

あなたが上に書いたこと、使用Date.compare()はほとんど正しいです。比較に関するドキュメントはこちらです。

ただし、それには2つのポイントがあります。

  • そのコードは、あなたがまとめたフィドルのどこにもありません。
  • あなたのフィドル$("input#field1")#("input#field2")は、ダイアログの選択ボックスではなく、入力ボックスを参照します。入力ボックスに値を割り当てる前に検証を行う必要があります。それ以外の場合は、値が既に割り当てられているため、ダイアログを閉じても問題ありません。

(フィドルに基づいて)行くべき場所は、[OK]ボタンがクリックされたときに呼び出される関数の先頭です。現在、現在の日付を処理して入力ボックスに値を入力してから、前の日付を処理して値を割り当てているようです。これが発生する前に、値が互いに前にあるかどうかを確認する必要があります。

于 2012-11-08T00:06:43.583 に答える