为动态创建的字段jQuery创建一个函数或事件


Create a function or event for dynamically created fields jQuery

我有一个带有指标的记分卡表格。指标问题是动态填充的,并从数据库中提取。我正在使用Laravel,我的代码:

$agent_options = array('' => 'Choose One') + DB::table('agents')->lists('name','id');
$metrics = Metric::where('campaign_id','=',1)->orderBy('id', 'asc')->get();
return view('scorecard.create')->with(array('agent_options'=>$agent_options, 'metrics'=>$metrics));

然后在我看来

@foreach($metrics as $key => $value)
<tr>
    <td class="col-md-2">{{$value->criteria}}</td>
    <td class="col-md-4">{!!$value->description!!}</td>
    <td class="col-md-4">{!!$value->question!!}</td>
    <td class="col-md-2">
        <select class="form-control" name="tl_assessment[]">
            <option value="">Choose One</option>
            <option value="Yes">Yes</option>
            <option value="No">No</option>
            <option value="N/A">N/A</option>
        </select>
    </td>
    <td class="col-md-3">{{$value->potential_points}}</td>
    <td class="col-md-3"><input type="text" class="form-control" name="score[]"></td>
</tr>
@endforeach

正如你所看到的,我还创建了tl_assessment下拉列表,供我通过回答是、否、N/A来记录是否满足指标。然后您可以看到potential_points

我的要求是,如果选择了"是"answers"不适用",则score的值在potential_points中是相同的。

我是jquery的新手,如果这些字段是静态的,我可以这样做。但我不知道从哪里开始。

给有潜力的td一个名为potential的类。给名称为score[]input一个score的类。

它最终应该看起来如下。。。

<tr>
    <td class="col-md-2">Test</td>
    <td class="col-md-4">Test</td>
    <td class="col-md-4">Test</td>
    <td class="col-md-2">
        <select class="form-control ts_assessment" data-key="test" name="tl_assessment[]">
            <option value="">Choose One</option>
            <option value="Yes">Yes</option>
            <option value="No">No</option>
            <option value="N/A">N/A</option>
        </select>
    </td>
    <td class="col-md-3 potential">35</td>
    <td class="col-md-3"><input type="text" class="form-control score" name="score[]"></td>
</tr>

然后您只需要添加以下脚本。

<script>
    $(document).ready(function() {
        $('.ts_assessment').change(function() {
            var val = $(this).val();
            var parent = $(this).parents('tr');
            if (val == 'Yes' || val == 'N/A') {
                var potential = parent.find('.potential').text();
                parent.find('.score').val(potential);               
            } else {
                parent.find('.score').val('');
            }
        });
    });
</script>