1

私はここで単純な何かを見逃しているに違いないことを知っていますが、私はいくつかの助けが欲しいです。

まず、HTML:

<input type="text" name="dob" />
<input id="age" type="text" name="age" />

そしてJavascript

$('input[name=dob]').change(getAge);
$('input[name=age]').change(getAge);
function getAge() {
    var today = new Date();
    var birthDate = new Date($('input[name=dob]').val());
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
        age--;
    }
    $('#age').val(age);
 };

これは私にはうまくいきません。「dob」フィールドに日付を入力すると、「age」フィールドはNaNを返します。

4

1 に答える 1

0

私はあなたが正しい年齢(またはまったく数値のリターン)を取得していないと仮定しています。いくつかの提案:

  1. コードブロックの最後に一重引用符がぶら下がっています。キャッチされないエラーが発生する可能性があるため、削除してください。

  2. 'dob'入力のフォーマットを強制または検証しているようには見えません。Dateオブジェクトは、特定のタイプの入力のみを受け取ります。必要なものを見つけて、それを強制します(ユーザーへのメッセージと使用前のチェックを使用して)。

  3. 'if'ステートメントの2番目の部分で、括弧を使用して、必要なものがチェックされていることを確認します。私はあなたがそれを書いた方法がこのチェックを引き起こすと信じています:( (m === 0) && today.getDate() ) < birthDate.getDate()。これを試してください:(m === 0) && ( today.getDate() < birthDate.getDate() )。それがお役に立てば幸いです。

于 2012-09-05T20:36:37.840 に答える