我有一个项目列表(使用PHP回显),对于每个项目,我都有一个隐藏的输入元素。我试图使用$("#inputid")。val()来获取该输入框的值。 这种工作,除了它只会抓取第一项的输入,而不是我想要的第二个输入值。
PHP / HTML代码:
<div class="container" id="main" style="display:table !important">
<div class="row" id="posts_container">
<?php
foreach ($data as $item)
{
$username = $item->username;
$followingData = new CirclesFriends();
$temp = $followingData->areYouFollowingUser(Yii::app()->user->username, $username);
$areYouFollowingData = $temp->getData();
$isFollowing = "";
if (count($areYouFollowingData) > 0)
{
$isFollowing = "Unfollow";
}
else
{
$isFollowing = "Follow";
}
echo "<input type='hidden' id='is_following' value='$isFollowing'></input>";
echo "<button id='submit' class='btn' onClick='isFollowing()'>".$isFollowing."</button>";
}
?>
</div>
</div>
这是我获取所选输入值的位置(仅返回第一个):
function isFollowing()
{
var s =$("#is_following").val();
alert(s);
}
为什么会这样?
答案 0 :(得分:3)
问题是由在所有循环迭代中使用相同的id引起的。 ID是唯一标识符,在这种情况下,它们不是唯一的。
解决问题的一种方法是将计数器与您的id连接起来,并将其作为参数传递给您的isFollowing
函数。
这样可以避免重复的ID。
答案 1 :(得分:2)
在每个循环中,对于所有隐藏字段,您都有相同的ID,这是错误的,您应该为不同的字段使用不同的ID
<div class="container" id="main" style="display:table !important">
<div class="row" id="posts_container">
<?php
$a = 0;
foreach ($data as $item)
{
$username = $item->username;
$followingData = new CirclesFriends();
$temp = $followingData->areYouFollowingUser(Yii::app()->user->username, $username);
$areYouFollowingData = $temp->getData();
$isFollowing = "";
if (count($areYouFollowingData) > 0)
{
$isFollowing = "Unfollow";
}
else
{
$isFollowing = "Follow";
}
echo "<input type='hidden' id='is_following_".$a."' value='$isFollowing'></input>";
echo "<button id='submit_".$a."' class='btn' onClick='isFollowing(this.id)'>".$isFollowing."</button>";
$a++;
}
?>
</div>
</div>
Jquery将是:
<script type="text/javascript" >
function isFollowing(id)
{
idArray = id.split("_");
id = idArray[1];
var val = $("#is_following_"+id).val();
alert(val);
}
</script>
答案 2 :(得分:1)
您可以在PHP代码中取一个计数器变量,然后将其与隐藏字段id="is_following".$counter
连接,然后在按钮onclick
函数中也将此变量作为参数isFollowing($counter)
传递
function isFollowing(id) {
var s =$("#is_following"+id).val();
alert(s);
}
我希望它可以帮助你
由于
答案 3 :(得分:0)
我认为使用类而不是id会更容易。
例如,每个输入都有一个名为“followers”的类
<input type='hidden' class = 'followers' value='$isFollowing'/>
使用时那样:
var array_followers = $('.followers');
它会返回一个数组,因此您可以轻松获取它。 例如,如果要访问数组中第一个输入的值,则必须执行以下操作:
var first_value = array_followers[0].val();
var also_first_value = $('.followers')[0].val();
你可以循环播放。
希望它有所帮助。