【问题标题】:dynamically adding input on click but there's a while loop点击时动态添加输入,但有一个while循环
【发布时间】:2012-02-07 14:52:55
【问题描述】:

我在表单中有一个 while 循环

<?php
        <select>
        while($select = $sql->fetchObject())
        {
        $name=$select->name;
        $alt = $select->alt;
        echo "<option value='".$alt."'>".$name."</option>";
        }
        </select>
?>
<div id='new_name'>Add Name</div>

我想知道如何使用 jquery 在点击时动态添加一个新的选择选项(与 while 循环中的相同选项),如果有 php,我该怎么做?

非常感谢!

【问题讨论】:

  • PHP 在服务器端完成,Javascript 在客户端完成,因此请包含生成的 HTML 而不是 PHP 代码。

标签: php jquery jquery-ui dynamic


【解决方案1】:

PHP 代码在服务器端运行,而 jQuery 是 JavaScript,因此运行在客户端,因此 PHP 代码不会影响 jQuery。从服务器返回的只是一个纯 HTML 元素。因此,您可以使用 jQuery 的 .clone() 来制作选择的副本。

$('select').clone().appendTo('form');

由于您没有指定要单击的内容以添加复制的选择,因此我将仅举例说明它的外观:

$("#my-id-to-click-on").click(function(){
    $('select').clone().appendTo('form');
});

注意由于我对表单和输入中使用的类或 ID 一无所知,因此这些示例使用非常通用的选择器,如果您的 DOM 中有多个表单或多个选择,这将成为问题。我建议您将 ID 或类添加到您的表单和选择中,并使用它们来选择。这样会更防弹。

您可能还想添加一个 if 语句以确保仅在您第一次单击时复制选择。如果这是您希望它的行为方式。

【讨论】:

  • 感谢您的输入,我实际上是使用克隆来获取我的表单,但问题是,您所说的 ID 和类。也许我必须对数组进行某种服务器端 php 编码,然后进行一些内爆和爆炸,然后将其发送到我的数据库中。
  • @andrewliu 我不确定我理解你的意思。你想在数据库中存储什么?
  • 假设下拉菜单将填充名称,如果我想添加另一个名称,我会单击“添加名称”(这将克隆下拉菜单以添加另一个名称)。本质上,我希望能够将每个名称保存为数据库中的不同行,因此每个名称都有一个 ID(假设数据库自动递增)。我猜不需要内爆和爆炸。但我之所以这么说,是因为我可以做无限的可能性吗?
  • 另外,.clone() 可能有问题,是否有可能删除某个克隆的元素?
【解决方案2】:

您还可以:

  1. 使用 PHP 生成选择,禁用并隐藏它们,然后单击启用并显示。
  2. 使用 PHP 和 json_encode 设置包含所有数据(名称-alt 对)的 javascript 变量,然后单击使用变量内容通过 javascript 生成 HTML 选择。

【讨论】:

    猜你喜欢
    • 2021-12-02
    • 2014-01-03
    • 1970-01-01
    • 2022-11-14
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多