您如何在php输入之间切换?

时间:2018-11-29 17:38:02

标签: javascript php sql

根据我单击哪个按钮,我希望用户获得一个下拉列表或一个输入字段。基本上,要么选择一个现有的,要么创建一个新的。

<select name="choose[rowId]"></select>
<input name="choose[rowId]"/>

我正在使用javascript来显示上面的选项之一。有没有一种方法可以进行这项工作,而没有第一个name覆盖第二个?

它们必须具有相同的名称,因为它们表示相同的事物。如果需要的话,我不能只用JavaScript添加第二个,因为我用PHP计算了rowId

2 个答案:

答案 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应该检查隐藏字段的值并访问正确的变量。

希望会有所帮助。