如何使前端表单只接受某些值

时间:2015-02-02 作者:NDog

我有一个前端表单,我需要该表单将分类术语附加到帖子中,然而,我为用户提供了一个选项下拉列表,“自定义分类术语下拉列表”为了创建这个下拉列表,我尝试了一个select属性,并将术语作为选项进行了筛选。然而,问题来了,因为我有大量的分类法,这些分类法在下拉列表中并不实用。在本例中,我通过数据列表提取术语。这就产生了一个问题,用户可以使用下面我使用的代码,通过编写数据列表中没有建议的内容来创建自己的自定义分类术语。

我需要通过阻止datalist允许选项中没有的值,或者通过使用

wp_set_object_terms($post_id, $_POST[\'terms\'], \'products-tax\', true);
不接受任何不存在的分类术语,并分析一个错误,表示从列表中选择一个值。然而,我不知道如何做这两种选择。

任何帮助都是无价的谢谢!

我使用的代码:

这用于设置帖子的分类和术语。

\'tax_input\' => array(\'products-tax\' => $_POST[\'terms\'])
这是附加条款

wp_set_object_terms($post_id, $_POST[\'terms\'], \'products-tax\', true);
这是获取分类术语并将其作为选项列出的输入和数据列表。

<input type="text" list="products" id="product" name="terms[]" required>
<datalist id="products">
<?php
$products_tax = get_terms(\'products-tax\', \'orderby=id&hide_empty=0\');
$counter = 0;
foreach ($products_tax as $product ) {
$counter++;
echo \'<option value="\'.$product->slug.\'">\';

}
?>
</datalist>

1 个回复
SO网友:Mark Kaplun

您可能想使用term_exists http://codex.wordpress.org/Function_Reference/term_exists 检查术语是否“有效”。可能值得检查具有不匹配案例的API有多好。

另一种选择是使用AJAX根据用户输入填充输入控件。我几乎可以肯定有一些jquery插件可以做到这一点,然后希望您能够使用隐藏的输入来包含术语ID。这可能不太容易在服务器端实现,具体取决于每个AJAX请求中必须返回的值的详细信息。

如果您不想让特定页面有点臃肿,那么最好的选择是在javascript中创建一个包含所有术语的数组,并在将其发送到服务器之前验证输入(再次只发送术语id)。您可能也有一个jquery插件来实现这一点,而在wordpress端需要做的就是生成javascript数组并将其注入HTML。

结束

相关推荐

Using AJAX with Forms

我试图在WordPress中使用AJAX验证并提交表单,但是,我得到的响应是0。根据the codex, 这似乎表明admin ajax无法找到我定义的函数。我做错了什么?代码(为了演示而简化)<script type="text/javascript"> jQuery(function() { jQuery(document).on(\'click\', \'#test-button\', function() {