如何提交文本框值而不是"其他"到数据库

时间:2016-07-01 15:09:07

标签: javascript jquery

以下html代码是表单的一部分,它将信息发送到java servlet并更新sql数据库。这是一个下拉菜单。当用户选择"其他"时,javascript会显示一个文本框,以便用户可以指定更多详细信息。但是,当用户按下提交按钮时,在数据库中,它只是说"其他"而不是用户在文本框中输入的内容。感谢帮助,谢谢!

<script type="text/javascript">
    function showfield(name){
        if (name == 'Other')
            document.getElementById('div1').innerHTML = 'Please Specify: <input type="text" name="other" />';
        else 
            document.getElementById('div1').innerHTML = '';
    }
</script>

<select id="description" name="description" onchange="showfield(this.options[this.selectedIndex].value)" required>
    <option disabled selected value> ---Select--- </option>
    <option value="Accommodation">Accommodation</option>
    <option value="Travel">Travel</option>
    <option value="Meal Allowanced">Meal Allowances</option>
    <option value="Flat Rate">Flat Rate Expenses</option>
    <option value="Other">Other</option>
</select>
<div id="div1"></div>

2 个答案:

答案 0 :(得分:0)

假设所有这个标记都包含在将提交给服务器的<form>元素中,您应该只需检查description发布的值是否为“其他”然后阅读other的发布值。

代码会因服务器端实现而异。

答案 1 :(得分:0)

我认为您在服务器上检查的字段是&#34; description&#34;这是您select的名称。确实设置为&#34;其他&#34; (这是所选option的值)。

我的写法有点不同,但是使用当前代码,您需要将input命名为其他名称并检查服务器上的那个,或更改所选的option值。

客户端代码的示例更改:

<select id="description" name="description" required>
    <option disabled selected value> ---Select--- </option>
    <option value="Accommodation">Accommodation</option>
    <option value="Travel">Travel</option>
    <option value="Meal Allowanced">Meal Allowances</option>
    <option value="Flat Rate">Flat Rate Expenses</option>
    <option value="Other">Other</option>
</select>
<div id="div1">
    Please Specify: <input type="text" name="otherDescription" />
</div>

<script>
document.querySelector('#description').addEventListener('change', function (evt) {
    var inputWrapper = document.getElementById('div1'),
        input = inputWrapper.querySelector('input);
    if (evt.target.value == 'Other') {
        document.getElementById('div1').style.display = '';
    } else {
        document.getElementById('div1').style.display = 'none';
        input.value = '';
    }
});
</script>

您需要检查&#39; otherDescription&#39;在服务器上。

希望有所帮助