2016-07-01 30 views
0

以下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

@RoryMcCrossan 嗨,謝謝!但我不太明白。 '';'我應該用什麼來取代「其他」? – javaprogrammer

+0

類似這樣的作品也是這樣的:https://jsfiddle.net/66hhwng4/ – Hackerman

回答

0

我認爲你在服務器上檢查的字段是「描述」,它是你的名字select。這確實設置爲「其他」(這是所選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> 

的,你需要在服務器上檢查 'otherDescription'。

希望它有幫助

+0

嗨!感謝您的反饋意見。我應該如何更改代碼? – javaprogrammer

+0

我會在'div'中寫入'input'字段並保持隱藏狀態直到選擇被更改。 – idan

+0

當前不靠近電腦,所以不能真正寫一個例子......如果它仍然是相關的,當我將在一臺電腦附近,我會給我的答案添加一個片段。 – idan

0

假設所有這些標記的信息包含在將提交到服務器的<form>元素中,你應該能夠簡單地檢查,看是否張貼description值是「其他」,然後閱讀發佈價值爲other

代碼將根據您的服務器端實現而有所不同。

相關問題