【问题标题】:How to get correct input value with $("#inputid").val()如何使用 $("#inputid").val() 获得正确的输入值
【发布时间】:2015-07-25 02:30:45
【问题描述】:

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

为什么会这样?

【问题讨论】:

  • 由于循环使用,is_following 不是唯一标识符。尝试将计数器连接到此 Id 并将其作为参数传递给您的函数。
  • 现在可以使用了,谢谢 :)

标签: javascript php jquery html


【解决方案1】:

问题是由在所有循环迭代中使用相同的 id 引起的。 ID 是唯一标识符,在这种情况下,它不是唯一的。

解决此问题的一种方法是将计数器连接到您的 id 并将其作为参数传递给您的 isFollowing 函数。

这样可以避免重复的 ID。

【讨论】:

    【解决方案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>
    

    【讨论】:

      【解决方案3】:

      您可以在 PHP 代码中获取一个计数器变量,然后将其与隐藏字段(即 id="is_following".$counter)连接起来,然后在按钮 onclick 函数中也将此变量作为参数传递给 isFollowing($counter)

      function isFollowing(id) {
          var s =$("#is_following"+id).val();
          alert(s);
      }
      

      希望对你有帮助

      谢谢

      【讨论】:

        【解决方案4】:

        我认为使用类而不是 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();
        

        你可以在一个循环中做同样的事情。

        希望对你有帮助。

        【讨论】:

          猜你喜欢
          • 2022-09-27
          • 2022-12-04
          • 2016-04-09
          • 2022-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-31
          相关资源
          最近更新 更多