【问题标题】:multiple ckeditor with same name textarea具有相同名称的多个ckeditor textarea
【发布时间】:2013-03-31 19:41:36
【问题描述】:

我有一个通过 php 在循环中创建的表单

是这样的

<?php 

        $number = count($name_array);
        $id = 0;

        while($id<$number)
            {
                if($category[$id] == ewbp)
            {
            $ewbp = 'selected';
            }
                if($category[$id] == iwbp)
            {
            $iwbp = 'selected';
            }
                if($category[$id] == wbe)
            {
            $wbe = 'selected';
            }
                if($category[$id] == texture)
            {
            $texture = 'selected';
            }
                if($category[$id] == putties)
            {
            $putties = 'selected';
            }
                if($category[$id] == primer)
            {
            $primer = 'selected';
            }

        echo "
        <div class=\"update_form_holder\">
        <form action=\"processor/update.php\" enctype=\"multipart/form-data\" method=\"post\">
            <table>
                <tr>
                    <td>Name</td><td><textarea rows=\"1\" cols=\"30\" name=\"name\">"."$name_array[$id]"."</textarea></td>
                </tr>
                <tr>
                    <td>Small Description</td><td><textarea rows=\"2\" cols=\"60\" name=\"short_desription\">"."$short_description[$id] "."</textarea></td>
                </tr>
                <tr>
                    <td>Full Description</td><td><textarea rows=\"5\" cols=\"60\" name=\"long_description\">"."$long_description[$id]"."</textarea></td>
                </tr>
                <tr>
                    <td>Category</td>
                    <td>
                        <select name=\"category\">
                            <option value=\"ewbp\" ". "$ewbp" . ">Exterior Water Based Paints </option>
                            <option value=\"iwbp\" ". "$iwbp" . ">Interior Water Based Paints</option>
                            <option value=\"wbe\" ". "$wbe" . ">Water Based Enamel </option>
                            <option value=\"texture\" ". "$texture" . ">Textures</option>
                            <option value=\"putties\" ". "$putties" . ">Putties</option>
                            <option value=\"primer\" ". "$primer" . ">Premir</option>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td><input type=\"hidden\" value=\""."$idi[$id]"."\" name=\"idi\"></td>
                </tr>
                <tr>
                    <td><input type=\"submit\" value=\"update\"></td>
                </tr>
            </table>
        </form>
        </div>
        <div class=\"image_holder\">
            <img src=\""."$imgurl[$id]"."\" />
        </div>
        <form action=\"processor/delete.php\" method=\"post\">
            <input type=\"hidden\" value=\"$idi[$id]\" name=\"delete_id\">
            <input type=\"hidden\" value=\"$filename[$id]\" name=\"delete_file\">
            <input type=\"submit\" value=\"delete entry\" >
        </form>
        ";
        $id++;
        $ewbp = '';
        $iwbp = '';
        $wbe = '';
        $texture = '';
        $putties = '';
        $primer = '';
        }
        ?>

我试图让 textareas 使用 ckeditor,问题是,它需要不同的名称来创建新实例,但是我无法更改名称,因为数据被提交到另一个 php 文件以存储在 sql 数据库中.有没有办法让它创建更多实例而无需更改名称?我尝试使用 ID,但它不起作用。此外,这个link 让我怀疑这是否可能。

【问题讨论】:

  • 您或您的团队是否可以控制 php 脚本?
  • 是的,没有团队,只有我:P 所以可以改变任何需要的东西
  • 当您有两个同名字段时,第二个字段将始终是提交的字段。您可以将name="foo" 更改为name="foo[]",发送一组字段而不是最后一个。
  • 在这种情况下,我有一个带有一个字段的表单,然后是一个提交按钮,然后是一个带有另一个字段和另一个按钮的全新表单,这个循环继续。所以当我点击相关的提交按钮时,它总是提交正确的字段。

标签: php javascript html textarea ckeditor


【解决方案1】:

由于您可以控制整个解决方案(php 和 html/javascript),最简洁的解决方案是为每个文本区域选择不同的名称并更改您的 php 代码,以便在访问 @ 时使用这些新名称987654321@数组。


更新:在有时间进行一些测试后,我无法重现该问题。我已经使用以下 html 进行测试 - 它按预期工作,这意味着两个 ckeditor 可以分别呈现并提交:

<html>
 <head>
    <script type="text/javascript" src="ckeditor/ckeditor.js"></script>
 </head>
 <body>
    <form action="test.php" method="post">
      <textarea class="ckeditor" name="the_text"></textarea>
      <input type="submit">
    </form>

    <form action="test.php" method="post">
      <textarea class="ckeditor" name="the_text"></textarea>
      <input type="submit">
    </form>
 </body>
 </html>

我使用的是 CKEditor 4.1 版

【讨论】:

  • 它不仅是最后一个,而且是可能提交的任何 textarea 值。(脚本在循环中运行,因此产生多种形式。从 sql 中获取值并且循环继续直到所有值放在一个单独的表单中进行编辑)也无法更改 php,以便它可以通过 $_POST 获取新名称,因为无法控制可能形成多少个实例,因此可能会出现多少个新名称
  • 好的,我明白了。这使答案的第一部分过时了。已将其删除。现在我和你在一起,当文本区域处于不同形式时,ckeditor 应该可以正常工作。
  • 我对第二部分也有点困惑,考虑到实例的数量是动态的,无法控制要引入多少“名称”
  • 我已经回答了一个相关的问题:'如果只知道名称前缀,如何访问 $_POST'......我会看看也许我会再次找到这个。但这不是魔术。只需遍历$_POST 并尝试查找以your_text_area... 开头的索引
  • 我没找到。但就像我说的,这不是魔法。会AFK一段时间。也许稍后会仔细看看(试图让 ckeditor 只使用相同的名称)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 2011-09-25
  • 2016-02-04
相关资源
最近更新 更多