2017-01-06 14 views
0

私は、ユーザーが受益者を選択したときに指定されたパーセンテージを自動入力する受益者フォームを作成しました。たとえば、ユーザーはChild 1を選択することができ、別の表のChild 1に指定した割合(%)に基づいて、この割合で自動的にその割合を入力します(beneficiary_1())。私はonChangeは自動入力されたフィールドでは機能しません

function percentSum(){ 
    var arr = document.getElementsByName('beneficiary_share'); 
    var tot=0; 
    for(var i=0;i<arr.length;i++){ 
     if(parseInt(arr[i].value)) 
      tot += parseInt(arr[i].value); 
    } 
    document.getElementById('total_percentage').value = tot; 
} 

...割合のすべてを合計するが、私はそれが自動投入さフィールドで動作するとは思わない割合フィールドごとに別々のonChangeスクリプトを作成し、私はこれを変更することができる方法はありますそれは自動入力されたフィールドで動作しますか?

HTML:

<tr> 
    <td style="border-right: 1px solid #000000;"> 
    <g:ui_reference name="family_member_1" id="family_member_1" table="hr_beneficiary" query = "active=true^employee=javascript:gs.getUserID()" completer="AJAXTableCompleter" columns="employee; beneficiary_contact.relationship" onChange="beneficiary_1()" /> 
    </td> 
    <td class = "inside"><input class = "sf2823" type="text" id="fm1_ssn" name ="fm1_ssn" style="background-color:#dddddd" readonly="readonly"/> 
    </td> 
    <td class = "inside"><input class = "sf2823" type="text" id="fm1_address" name ="fm1_address" style="background-color:#dddddd" value="" readonly="readonly"/> 
    </td> 
    <td class = "inside"><input class = "sf2823" type="text" id="fm1_relationship" name ="fm1_relationship" style="background-color:#dddddd" value="" readonly="readonly"/> 
    </td> 
    <td><input class = "sf2823" type="text" id="fm1_percentage" name ="beneficiary_share" style="background-color:#dddddd" value="" readonly="readonly" onChange="percentSum()"/> 
    </td> 
</tr> 
+0

Plunker/jsfiddleしてください。 –

+0

onchangeがコードで変更された値によってトリガされない場合は、自分でトリガーする必要があります –

答えて

0

あなたは高いDOM要素から聞くことがあります。例えば

$(document).on('change', '#beneficiary_share', percentSum); 

新しい要素percentSum関数が呼び出されることを追加します。

+0

Hey Alex、あなたはそれを拡張できますか?私はJSには慣れていないので、あなたが意味することを正確に理解していません。ありがとう! – Dave

+0

あなたの質問に言い聞かせるのは難しいですが、私たちが理解しやすいように作業用のjsバイブルを投稿するべきです。しかし、わかっていれば、ユーザーがページとやりとりした後に新しいHTMLマークアップを生成しています。その場合、Javascriptコードが既に実行されているため、この新しいHTMLは変更をリッスンしません。そうではなく、任意のドキュメント(最高のhtml要素)の変更を聞き、何かがHTMLに起こると、上記の関数の2番目のパラメータであるターゲットHTMLでその関数を呼び出します。 – alexr101

+0

はじめまして...これは** jQuery **です。これは質問にタグが付けられていないので、jQueryプラグイン/ライブラリを知らない/使用している人には説明が役立ちます。 – NewToJS

関連する問題