在选择框更改事件上获取隐藏输入字段的 ID
Posted
技术标签:
【中文标题】在选择框更改事件上获取隐藏输入字段的 ID【英文标题】:get id of hidden input field on select box change event 【发布时间】:2018-10-05 13:00:12 【问题描述】:我有一个动态表,其中的行数据使用 foreach 方法显示。 我想在更改选择框选项时获取隐藏输入字段的值。 这是我的代码,
@foreach($sCForms as $sCForm)
<tr>
<td>!! $sCForm->Description !!</td>
<td style="display: none;"><input type="hidden" class="hidden"
value="$sCForm->id" id="hidden"></td>
<td class="demo">
<select name="assigned_to" id="assigned_to" class="demo form-control
required" style="width: 90%;" onchange="changeassigned()">
<option value="">--Select user--</option>
@foreach($users as $user)
<option value="$user->id">
$user->first_name $user->last_name
</option>
@endforeach
</select>
</td>
</tr>
@endforeach
我的功能:
function changeassigned()
var id = $('#assigned_to').val();
var form_id = $('.demo').parent().parent().find('input').val();
alert(form_id);
我对这段代码的问题是我只得到第一行隐藏字段的值。
获取每行隐藏字段值的最佳方法是什么?
【问题讨论】:
除非你 foreach 只返回 1 个循环,否则你将拥有多个具有相同 ID 的元素,这是不行的。 ID 应该始终是唯一的。第二次尝试使用changeassigned(this)
然后function changeassigned(obj) var id = $(obj).val();
【参考方案1】:
我将永远是独一无二的,这应该为您提供您想要的结果:
function changeassigned(obj)
var id = $(obj).val();
var form_id = $(obj).closest("tr").find('input').val();
alert(form_id);
演示
function changeassigned(obj)
var id = $(obj).val();
var form_id = $(obj).closest("tr").find('input').val();
alert(id + " | " + form_id);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>My Form</td>
<td style="display: none;"><input type="hidden" class="hidden" value="FormID" id="hidden"></td>
<td class="demo">
<select name="assigned_to" class="demo form-control
required" style="width: 90%;" onchange="changeassigned(this)">
<option value="">--Select user--</option>
<option value="user1">
user1
</option>
<option value="user2">
user2
</option>
</select>
</td>
</tr>
<tr>
<td>My Form2</td>
<td style="display: none;"><input type="hidden" class="hidden" value="FormID2" id="hidden"></td>
<td class="demo">
<select name="assigned_to" class="demo form-control
required" style="width: 90%;" onchange="changeassigned(this)">
<option value="">--Select user--</option>
<option value="user3">
user3
</option>
<option value="user4">
user4
</option>
</select>
</td>
</tr>
</tbody>
</table>
【讨论】:
【参考方案2】:看起来你会得到具有相同 "id" 的元素。将其更改为 class 或其他内容 =)
您可以将“this”传递给更改分配的函数以获取选择器的起点
【讨论】:
这与我的评论有何不同? same.. 也在同一时间 我比你早 2 分钟写了我的评论。 拿个饼干)) 它是关于向OP提供相关信息和答案,但无需提供多个基本相同的答案/cmets。我刚刚澄清你说我们同时写的,wish 基本上是不正确的。【参考方案3】:Try Like this - using variable i, create dynamic id of hidden and select
$i=0
@foreach($sCForms as $sCForm)
<tr>
<td>!! $sCForm->Description !!</td>
<td style="display: none;"><input type="hidden" class="hidden"
value="$sCForm->id" id="hidden $i "></td>
<td class="demo">
<select name="assigned_to" id="assigned_to $i " class="demo form-control
required" style="width: 90%;" onchange="changeassigned( $i )">
<option value="">--Select user--</option>
@foreach($users as $user)
<option value="$user->id">
$user->first_name $user->last_name
</option>
@endforeach
</select>
</td>
$i++
</tr>
@endforeach
function changeassigned(i)
var id = $('#assigned_to'+i).val();
var form_id = $('#hidden'+i).val();
alert(form_id);
【讨论】:
你还在复制身份证!! 我忘了,请声明“$i = 0” 不,您仍在复制id="assigned_to"
,同样适用于您的 jquery 函数。
id="assigned_to $i " 那么您应该动态更改选择标签ID,然后尝试一下。可以解决,在你的 js 中也改变 var id = $('#assigned_to'+i).val();而不是 var id = $('#assigned_to').val();
我不是在问“怎么做”,我只是告诉你你有一个错误。以上是关于在选择框更改事件上获取隐藏输入字段的 ID的主要内容,如果未能解决你的问题,请参考以下文章