0

状態に問題がありifます。alertフィールドからの値#customer-ageが21(計算された人の年齢)未満の場合に表示する必要があるスクリプトを作成します。問題は、値が21よりも小さい場合と21より大きい場合に、アラートが毎回表示されることです。

私のHTMLコードは次のとおりです。

<div class="type-text">
<label for="birthday">Date1:</label>
<input type="text" size="20" id="birthday" name="birthday" value="" readonly="readonly" />
</div>

<div class="type-text">
<span id="customer-age" readonly="readonly"></span>
</div>

<span id="date_from_start">23/11/2012</span>

スクリプトは次のようになります。

function getAge() {
    var sday =  $('#date_from_start').html();
    var split_date1 = sday.split("/");  
    var todayDate = new Date(split_date1[2],split_date1[1] - 1,split_date1[0]);

    var bday = $('#birthday').val();
    var split_date2 = bday.split("/");
    var birthDate = new Date(split_date2[2],split_date2[1] - 1,split_date2[0]);

    var age = todayDate.getFullYear() - birthDate.getFullYear();
    var m = todayDate.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && todayDate.getDate() < birthDate.getDate())) {
        age--;
    }
    return age;
}

var startDate = new Date("1935,01,01");

$('#birthday').datepicker({
    dateFormat: 'dd/mm/yy',
    dayNamesMin: ['Nie', 'Pon', 'Wt', 'Śr', 'Czw', 'Pt', 'Sob'],
    dayNames: ['Niedziela','Poniedzialek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
    monthNamesShort: ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'],    
    changeMonth: true,
    changeYear: true,
    numberOfMonths: 1,
    constrainInput: true, firstDay: 1, dateFormat: 'dd/mm/yy',
    yearRange: '-77:-18',
    defaultDate: startDate,
    onSelect: function(dateText, inst) {
        $('#customer-age').html(getAge(new Date(dateText)));
        var cage = $('#customer-age').val();
          if (cage < 21)
             {
             alert('< 21 year');
             }
          else {
          }
    },
    maxDate: +0
});

http://jsfiddle.net/amarcinkowski/DmYBt/で確認できる作業コード

4

5 に答える 5

3

次の場所から行を変更します。

var cage = $('#customer-age').val();

var cage = parseInt($('#customer-age').html(), 10);

jsFiddle

追加:次のような意味ですか:

var infoContent = $.trim( $("#info").html() );
alert( infoContent );
于 2012-11-22T10:58:22.693 に答える
1

.val()スパンタグでは無効であり、何も返しません。

.html()代わりに使用してください。.text()また動作します。

Intに対して明示的に解析する必要はありません。これは、自動的に行われます。

var cage = $('#customer-age').html();
于 2012-11-22T10:59:38.193 に答える
1

使用する:

var cage = $('#customer-age').text();

それ以外の:

var cage = $('#customer-age').val();

これがJSFiddleです。

于 2012-11-22T10:59:38.593 に答える
0

状態に問題はありません、バグはあなたの日付ピッカーにあると思います。

コードをこれに変更して、私が何を意味するかを見てください:

  if (cage < 21)
  {
     alert(cage);
  }
  else 
  {
  }

可変ケージの値は空です。それはNaNになります。

于 2012-11-22T11:03:12.743 に答える
0

2つのこと:

  1. 文字列を比較しているparseInt()ので、整数に変換してから比較するために使用する必要があります。

  2. cage空です。

于 2012-11-22T11:05:11.233 に答える