繁体   English   中英

从变量到隐藏表单域的奇怪输出

[英]Strange output from variable to hidden form field

下面是一个功能,该功能从数据库输出带有现有用户的表单,并带有复选框和提交按钮。 用户选择一个或几个要删除的用户并提交表单。 我现在正在做的是在js中实现一个确认框(“您确定要删除...”),该确认框应包含用户要删除的用户。

因此,我将用户名放在一个隐藏的字段中,js函数将从中获取用户名。 问题在于,不仅用户名被放入隐藏的输入字段的value属性中,而且几个输入字段也被放入(!?)。 如果我在属性中例如在'username1,username2'中进行硬编码,它将按预期方式工作,但如果我使用变量$ users,则不会。

    public function ShowUsers($userArray) {

        $userIdArray = $userArray[0];
        $userNameArray = $userArray[1];
        $users = implode(",", $userNameArray);

        echo $users;        // username1,username2...

        $nrOfUsers = count($userIdArray);

        for ($i = 0; $i < $nrOfUsers; $i++) {
            $users .= "<label for='$userIdArray[$i]'>
                        $userNameArray[$i]
                        <input type='checkbox' name='$this->_checkBox' value='$userIdArray[$i]' /><br/>
                        </label>";
        }

        $userList = "<div class='userList'>
                    <form id='form3' method='post' action=''>
                        <fieldset>
                            <p>Existing users</p>
                            $users
                            <input type='hidden' value='$users' />
                            <input type='submit' id='$this->_submitRemove' name='$this->_submitRemove' Value='Ta bort' />
                        </fieldset>
                    </form>
                    </div>";

        return $userList;
    }

输出如下:

<input type='hidden' value='username1,username2<label for='47'>
                        username1
                        <input type='checkbox' name='check[]' value='47' /><br/>
                        </label><label for='50'>
                        username2
                        <input type='checkbox' name='check[]' value='50' /><br/>
                        </label>' />

我只是不明白为什么会这样? $ users的内容(在本例中为'username1'和'username2')按预期存在,但是为什么将input和label标记放入value属性中?

问题出在您的for循环中。 在那里,您将所有HTML附加到变量$users ,该变量已经是$users == username1,username2 如果您确实echo $users; 甚至var_dump($users); 在完成for循环之后,您将看到。
您实际上想在for循环中实现什么? 你是不是故意

for ($i = 0; $i < $nrOfUsers; $i++) {
    echo "<label for='$userIdArray[$i]'>
                $userNameArray[$i]
                <input type='checkbox' name='$this->_checkBox' value='$userIdArray[$i]' /><br/>
          </label>";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM