自定义管理插件-将可重复的选择字段(添加、删除)注入有序列表

时间:2019-08-15 作者:belthazorNv

我目前正在创建我的第一个插件;我远道而来;虽然我偶然发现了一个问题。

我不知道在wordpress中实际创建字段的正确方法是什么-如果有任何验证,是否需要添加安全性,如nonce等。

我当前的问题:我注意到一个奇怪的行为,当我向表单中注入一个可重复的表单字段并提交表单时,我看不到注入的数据,即使它们在DOM中是相同的。-虽然当我在文档中添加更多内容时(不插入表单字段),我会得到与表单一起提交的数据。

Form

<form id=\'new-form\' action="" method="post">
  <tr>
    <td><input type="text" value="AUTO_GENERATED" disabled></td>                
    <td>
        <select name="new-placement" id="new-placement">
            <option value="val">slug</option>
        </select>
    </td>               
    <td><input type="text" id="new-slug" name="new-slug"></td>
    <td>
        <ol id="list-container-new">
            <li>
                <select name="new-items[]">
                   <option value="val">name</option>
                </select>
                <button class="remove-item-new">Remove</button>
            </li>                       
        </ol>                  

        <button id="add-item-to-items-new">Add</button>             
    </td>
    <td>
        <?php wp_nonce_field( "items_save", "items_save") ?>
        <button id="newsubmit" name="newsubmit" type="submit">Create</button>
    </td>
  </tr>
</form> 

jQuery to add

    jQuery(\'#add-item-to-list-new\').on(\'click\', function(e) { 
        e.preventDefault();     

        let html = \'<li>\';
        html += \'<select name="new-items[]">\';
        itemsVariable.forEach((element, index, arr) => {
            html += \'<option value="\' + element.id + \'">\' + element.name + \'</option>\';         
        }); 
        html += \'</select>\';
        html += \'<button class="remove-item-new">Remove</button>\';
        html += \'</li>\'

        jQuery(\'#list-container-new\').append(html);
    })
以上未与表单数据一起提交;虽然如果我在页面中手动添加它,它确实会添加。-有没有我跳过的步骤?比如告诉wordpress我正在添加一个新字段?

1 个回复
SO网友:belthazorNv

表单不允许是表、tbody或tr的子元素。如果试图将表单放在其中,则会导致浏览器将表单移动到它出现在表之后的位置(同时保留其内容-表行、表单元格、输入等)。

您可以在表单中包含整个表。您可以在表格单元格中有一个表单。表单中不能有表的一部分。

在整个表格周围使用一个表格。然后使用单击的提交按钮确定要处理的行(要快速),或处理每一行(允许批量更新)。

Read more here.

相关推荐