私は、ダイナミックテキストボックスに私の自動計算年齢関数の値を配置しようとしています。それはdatepickerのonchangeによって引き起こされている。Uncaught TypeError:2回目の呼び出し後にヌルのプロパティ 'value'を設定できません。
最初のテキストボックスが静的であるため、最初に呼び出すときに機能しますが、後で呼び出すとnullが返されます。
私は、このために3つのファイルがあります。
header.phpの
<script src="assets/js/functions.js"></script>
dependents.php
<div class="row"> <div class="col-md-12"> <label for="num_dependents" class="text-left">Dependents:</label> </div> <div class="col-md-12"> <div class="col-md-12"> <div class="form-group"> <div class="pull-right"> <button type="button" class="btn btn-primary" id="addRow"> Add <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> </button> </div> <table class="table table-bordered table-striped" id="dependent_table"> <thead> <tr> <th style="width:45%;">Name of Dependent</th> <th style="width:10%;">Age</th> <th style="width:35%;">Date of Birth</th> <th style="width:10%;"></th> </tr> </thead> <tbody> <tr> <td class="vert-align"><input type="text" class="form-control" name="name_dependent_1" id="name_dependent_1"></td> <td class="vert-align"><input type="text" class="form-control" name="age_dependent_1" id="age_dependent_1" disabled></td> <td class="vert-align"> <div class="col-md-12"> <div class="form-group has-feedback" style="margin-top:12px;"> <input class="form-control datePick" id="dob_dependent_1" name="dob_dependent_1" placeholder="YYYY-MM-DD" data-date-format="yyyy-mm-dd" type="text" onchange="CalculateAge(this.value, 'age_dependent_1');"/> <i class="glyphicon glyphicon-calendar form-control-feedback"></i> </div> </div> </td> <td></td> </tr> </tbody> </table> </div> </div> </div> </div>
functions.jsを
$(document).ready(function() { $(document).delegate('#addRow', 'click', AddRow); var i = 1; var id_age; function AddRow() { i++; id_age = 'age_dependent_'+ i; $("#dependent_table").append("<tr>"+ "<td class='vert-align' style='width:45%;'><input type='text' class='form-control' name='name_dependent_" + i + "' id='name_dependent_" + i + "'></td>"+ "<td class='vert-align' style='width:10%;'><input type='text' class='form-control' name='age_dependent_"+ i +"' id=\"'"+id_age+"'\" disabled></td>"+ "<td class='vert-align' style='width:35%;'><div class='col-md-12'><div class='form-group has-feedback' style='margin-top:12px;'><input class='form-control datePick' id='dob_dependent_"+ i +"' name='dob_dependent_"+ i +"' placeholder='MM/DD/YYYY' data-date-format='yyyy-mm-dd' type='text' onchange=\"CalculateAge(this.value,'" + id_age + " ');\"/><i class='glyphicon glyphicon-calendar form-control-feedback'></i></div></div></td>"+ "<td class='vert-align' style='width:10%;'><img src='images/disk.png' class='btnSave'><img src='images/delete.png' class='btnDelete'/></td>"+ "</tr>"); $(".btnSave").bind("click", Save); $(".btnDelete").bind("click", Delete); return false } }); var date_val; function CalculateAge(date_val, id_age){ var today = new Date(), dob = new Date(date_val), age = new Date(today - dob).getFullYear() - 1970; document.getElementById(id_age).value = age; //return $('#'+id_age).val(age); }
あなたは、アクションhereでそれを見ることができます。左側の[ログイン]タブをクリックし、[サインアップ]をクリックします。民事ステータスでは、[単一]を除く任意のオプションをクリックすると、従属セクションが表示されます。あなたはdatepickerで日付を入力してみることができます。年齢はその横の無効なテキストボックスに表示されます。 'Add Row'をクリックしてもう一度やり直すとエラーが発生します。
私は誰かが助けてくれることを願っています。どうもありがとう!
こんにちは!ご意見ありがとうございます。私は今それを変更しましたが、まだnullを返しています。 'document.getElementById(id_age).value = age;' –
私の答えを更新しました。 –
最後の1つでした: 'CalculateAge(this.value、 '" + id_age + "')' そのシンプルなスペースは本当にそれを台無しにしました。あなたは命の恩人です! :) –