-2

これは StackOverflow に関する私の最初の投稿です。この Web サイトのコード スニペットに関する多くのページを読みましたが、常に適切な回答とアドバイスを提供してくれます。

しかし今、私はいくつかの支援を必要としています..複数の入力フィールドにデータを入力したいので、JavaScript にフィールド ID を追加しようとしましたが、今のところうまくいきません。

<script type="text/javascript">
<!--
function calculateAge(inputFieldId, outputFieldId, alert_18){

var age;

var input = document.getElementById(inputFieldId).value;

// Past date info

var pyear = parseInt(input.substring(6,10));
var pmonth = parseInt(input.substring(0,2)) - 1;
var pday = parseInt(input.substring(3,5));
// Today info
today = new Date();
year = today.getFullYear() ;
month = today.getMonth();
day = today.getDate();

if ( month < pmonth ){
age = year - pyear - 1;
}
else if ( month > pmonth ){
age = year - pyear;
}
else if ( month == pmonth ){
if ( day < pday ){
age = year - pyear - 1;
}
else if ( day > pday ){
age = year - pyear;
}
else if ( day == pday ){
age = year - pyear;
}
}
document.getElementById(outputFieldId).value = age;
document.getElementById(outputFieldId).value = age2;

if(alert_18 == 'true'){
if(age < 18){

//Customize alert message

alert('Attention: under 18!');
}
}
}
//-->
</script>

どんな助けでも大歓迎です

4

1 に答える 1

0

人口を任意の数の出力フィールドに処理するには、次の解決策をお勧めします(そして、うるう年を考慮せずに年齢を大まかに計算します):

<script type="text/javascript">
<!--
function calculateAge(inputFieldId, outputFieldId, alert_18){
  var input = document.getElementById(inputFieldId).value,
      pyear = parseInt(input.substring(6,10)),
      pmonth = parseInt(input.substring(0,2)) - 1,
      pday = parseInt(input.substring(3,5)),
      dt1 = new Date(),
      dt2 = new Date(pyear, pmonth, pday),
      ageMs = dt2.getTime() - dt1.getTime(),
      age = parseInt(ageMs / 1000 / 60 / 60 / 24 / 365);


  if(outputFieldId instanceof Array) {
    for(var i = 0, l = outputFieldId.length; i < l; i++)
      document.getElementById(outputFieldId[i]).value = age;
  }
  else
    document.getElementById(outputFieldId).value = age; 

  if(alert_18 && age < 18) {
    //Customize alert message

    alert('Attention: under 18!');
  }
}
//-->
</script>

次に、それを呼び出すときに、次のように単一の文字列を outputfieldid として渡すことができます。

calculateAge("get-age", "calculated-age", true);

または、次のようにフィールド ID の配列を渡すこともできます。

calculateAge("get-age", ["calculated-age1", "calculated-age2"], true);
于 2012-10-23T12:43:23.963 に答える