如何使用$("#inputid")获得正确的输入值.val()

时间:2015-06-12 05:21:09

标签: javascript php jquery html

我有一个项目列表(使用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);
    }

为什么会这样?

4 个答案:

答案 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();

你可以循环播放。

希望它有所帮助。