根据我单击哪个按钮,我希望用户获得一个下拉列表或一个输入字段。基本上,要么选择一个现有的,要么创建一个新的。
<select name="choose[rowId]"></select>
<input name="choose[rowId]"/>
我正在使用javascript来显示上面的选项之一。有没有一种方法可以进行这项工作,而没有第一个name
覆盖第二个?
它们必须具有相同的名称,因为它们表示相同的事物。如果需要的话,我不能只用JavaScript添加第二个,因为我用PHP计算了rowId
。
答案 0 :(得分:1)
您可以轻松制作类似于此示例的javascript:
jsFiddle演示:https://jsfiddle.net/2u9b4txk/
<div id="my_option">
<select name="choose[rowId]">
<option value="option 1">Existing Opt 1</option>
<option value="option 3">Existing Opt 2</option>
<option value="option 2">Existing Opt 3</option>
</select>
</div>
<div id="my_option_new">
<div id="add-opt">CREATE NEW</div>
</div>
<!-- requires jQuery library or refactoring for vanilla JS -->
<script>
$('#add-opt').on('click', function(){
$('#my_option_new').html('<input name="choose[rowId]" placeholder="Add new option" />');
$('#my_option').replaceWith('');
});
</script>
这只是一个快速示例,仅显示默认下拉列表,然后单击create
按钮时,它将替换为输入字段。有各种各样基于javascript的解决方案。
另一种解决方案是对这个字段进行数组设置,在后端只需使用array_filter()
来删除空白:
<select name="choose[rowId][]"></select>
<input name="choose[rowId][]"/>
如果数组中仍然有2个值,那么将添加一个新字段,如果没有,则将使用select
值。
答案 1 :(得分:0)
据我所知,你做不到。
但是您可以做的是添加一个hidden
字段,当将值返回到后端时,该字段可以存储要使用的字段。在后端,您的php应该检查隐藏字段的值并访问正确的变量。
希望会有所帮助。