以下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>
答案 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;在服务器上。
希望有所帮助