目錄位置:網頁技術 → asp 及asp.net →
列印

如何利用下拉式選單,取得資料表的值

參考檔案1     2004/5/4

http://asp.database.net.tw/board_5/show.asp?repno=51103&PgmType=ASP
主題: [ASP]
如何利用下拉式選單,取得資料表的值,並且show在text上 作者: 汝兒 發表日期: 04/05/03 15:02:52
我有一張資料表,主要有兩個欄位,一是國別,另一是匯率。
我已經將下拉式選單加入了從資料表搜尋而來的所有"國別"
但是,我想要在下拉式選單上更改國別時,能一併將於旁邊的TEXT上,show出從資料表裡抓到的相對應的匯率。
table: 國別 匯率
-----------------
美國 33
英國 45
德國 60
比如說:當國別更改為"英國"時,那麼旁邊的TEXT即顯示45
ps可以不一定要text,但要有如此的功能…
感謝熱情相助的好心人~~

--------------------------------------------------------------------------------
1 回應者: maduka 日期: 2004/5/3 下午 03:22:00
寫個例子給您參考

<form>
<Select Name="FrmCountry" onchange="funChgCountry(this.value);">
<option value="33">美國</Option>
<option value="45">英國</Option>
<option value="60">德國</Option>
</Select>
<input type="text" name="FrmText" value="">

<Script language="Javascript">
funChgCountry(x){
document.forms[0].FrmText.value=x;
}
</Script>
</form>
2 回應者: 神戶牛 日期: 2004/5/3 下午 03:24:00
我用vbscript寫一個範例,看看合不合你用~

<body>
<form name="form1" method="post" action="">
<select name="select1" onChange="changetext()">
<option value="33">美國</option>
<option value="45">英國</option>
<option value="60">德國</option>
</select>
<input name="text" type="text" id="text">
</form>
</body>
</html>
<script language="vbscript">
Sub changetext()
form1.text.value = form1.select1.value
end Sub
</script>
3 回應者: 汝兒 日期: 2004/5/3 下午 03:36:00
先謝謝兩位好心人,但是我呀還有個問題,
就是,各個option的value,一定要是國別,而匯率就是在改變選項之後,從資料表裡抓取…
不知道,這樣可不可以呢??
4 回應者: maduka 日期: 2004/5/3 下午 03:42:00
若是有這樣的需求的話

可能就必須在Script的Function中去呼叫ASP的程式並帶入到頁面中的物件裡

過程比較麻煩一點...
5 回應者: 123 日期: 2004/5/3 下午 03:42:00
如上兩位大大的程式碼,因為匯率會改變,所以先用SQL將每個值抓出,在印出即可呀!
value="<%=匯率%>"
6 回應者: maduka 日期: 2004/5/3 下午 03:47:00
再寫一些給您參考吧~^^

主頁的內容

<form>
<Select Name="FrmCountry" onchange="funChgCountry(this.value);">
<option value="美國">美國</Option>
<option value="英國">英國</Option>
<option value="德國">德國</Option>
</Select>
<input type="text" name="FrmText" value="">

<Script language="Javascript">
funChgCountry(x){
window.open("RtnVal.asp?country=" + x);
}
</Script>
</form>

----------------------------------------------

RtnVal.asp的內容

<%
chaCountry = Request("country")

chaSql = "SELECT ....." ' <==取出匯率

intCountryVal = RS("匯率欄位")
%>

<Script Language="Javascript">
opener.document.forms[0].FrmText.value="<%=intCountryVal%>";
window.close();
</Script>
7 回應者: 汝兒 日期: 2004/5/3 下午 03:49:00
謝謝maduka,但是我比較愚笨~~不大懂您說的做法要如何做耶~~
@_@
若不打擾你的話,可否解釋的更詳細一點呢??

另外,感激123大大,但我希望各個option的value值必須為國別,因為這個選單,還必須用做新增的用途~~所以,不能直接指為匯率

感謝熱情的好心人相助~~
8 回應者: maduka 日期: 2004/5/3 下午 03:55:00
剛才那一段的意思

就是當使用者變換Select的option時,呼叫Script的Function

而這個Function會偷偷開一個視窗並打開RtnVal.asp,並傳送國別的資料進去

在RtnVal.asp中,就可以藉由國別資料取出匯率,並用Script的方式將值傳回主頁中的文字方塊,並自動關閉這個小視窗

這是整個流程,不過還是要您瞭解之後試試看ㄌ~^^
9 回應者: 汝兒 日期: 2004/5/3 下午 04:18:00
感謝maduka,但是我試了一下,
當選單改變時,text並沒有出現任何值,而且左下角會出現三角形耶~~
我想了蠻久的~~
可能是我對javascript語法不熟吧~~不曉得是不是還有哪些要改嗎??
謝謝....
10 回應者: maduka 日期: 2004/5/3 下午 04:22:00
Sorry~~^^"

<form>
<Select Name="FrmCountry" onchange="funChgCountry(this.value);">
<option value="美國">美國</Option>
<option value="英國">英國</Option>
<option value="德國">德國</Option>
</Select>
<input type="text" name="FrmText" value="">

<Script language="Javascript">
function funChgCountry(x){
window.open("RtnVal.asp?country=" + x);
}
</Script>
</form>

少了一個function...
11 回應者: 汝兒 日期: 2004/5/3 下午 04:31:00
那個"function" 我有發現,我有加上去哦~~
但是結果就如我前面所說的~~:(
12 回應者: maduka 日期: 2004/5/3 下午 04:35:00
以下是我的測試檔案內容

index.htm
<form>
<Select Name="FrmCountry" onchange="funChgCountry(this.value);">
<option value="美國">美國</Option>
<option value="英國">英國</Option>
<option value="德國">德國</Option>
</Select>
<input type="text" name="FrmText" value="">

<Script language="Javascript">
function funChgCountry(x){
window.open("RtnVal.asp?country=" + x);
}
</Script>
</form>

RtnVal.asp
<Script Language="Javascript">
opener.document.forms[0].FrmText.value="123";
window.close();
</Script>

確定可以Run,您可以點兩下三角驚嘆號,看看是什麼錯誤
13 回應者: 汝兒 日期: 2004/5/3 下午 04:38:00
謝謝,我明天再來試試看~~
現在要先下班了~~^^
14 回應者: 汝兒 日期: 2004/5/4 上午 10:09:00
哈囉~~好心人…
我今天測試了一下,已經能達到我的要求了,
但是我發現,之前不能用的原因是因為我在程式一開始有寫一段VBscript來判斷其他必須輸入的欄位是否有輸入值,把這段拿掉之後就能達成select的那個功能,但是,這樣子我就不能對輸入欄位做控管了耶…有辦法這兩個都並存嗎??
謝謝你~~好心會有好報的~~^^
15 回應者: maduka 日期: 2004/5/4 上午 10:23:00
可以的,能否麻煩您將檢查的程式post上來呢?
16 回應者: 汝兒 日期: 2004/5/4 上午 10:36:00
<script language="vbscript">
<!--

Sub fieldcheck()
If len(frmOrder.EdtName.value) = 0 Then
MsgBox "“姓名”不可為空白!!", 64, "Error!!"
focusto(0)
Exit Sub
End if
If InStr(frmOrder.Edtmail.value, "@") = 0 Then
MsgBox "E-mail當中需包含 '@' 字元!", 64, "Error!!"
focusto(3)
Exit Sub
End if
If frmOrder.ServerName.value = "0" Then
MsgBox "未選擇購買的伺服器!!", 64, "Error!!"
focusto(4)
Exit Sub
End if
If len(frmOrder.EdtAmount.value) = 0 Then
MsgBox "未輸入購買的金額!!", 64, "Error!!"
focusto(5)
Exit Sub
End if

'Submit(傳送)表單資料至Web Server
frmOrder.Submit
End Sub

Sub focusto(x)
'將游標定位於某個欄位
document.frmOrder.elements(x).focus()
End Sub

-->
</script>
----------------------------------------------------------
以上是我做檢查的vbscript,都是為了做檢查欄位有無輸入用的;
我有試過把這整段vbscript搬到程式的最後面去,
但是那個檢查的功能一樣會有錯誤....
但搬回到最前面去,就能檢查欄位,但就沒法有那個匯率的功能了。
ps.我的select在此程式裡名為:ServerName
謝謝你,好心人~~
17 回應者: 汝兒 日期: 2004/5/4 上午 10:49:00
剛剛忘了說,加上那段script的錯誤訊息是指到我寫select onchange那一行,然後會說:此處需要物件'this'
麻煩你解惑一下,感激~~
18 回應者: maduka 日期: 2004/5/4 上午 11:09:00
幫您把兩段結合了一下

<script language="vbscript">
<!--

Sub fieldcheck()
If len(frmOrder.EdtName.value) = 0 Then
MsgBox "“姓名”不可為空白!!", 64, "Error!!"
focusto(0)
Exit Sub
End if
If InStr(frmOrder.Edtmail.value, "@") = 0 Then
MsgBox "E-mail當中需包含 '@' 字元!", 64, "Error!!"
focusto(3)
Exit Sub
End if
If frmOrder.ServerName.value = "0" Then
MsgBox "未選擇購買的伺服器!!", 64, "Error!!"
focusto(4)
Exit Sub
End if
If len(frmOrder.EdtAmount.value) = 0 Then
MsgBox "未輸入購買的金額!!", 64, "Error!!"
focusto(5)
Exit Sub
End if

'Submit(傳送)表單資料至Web Server
frmOrder.Submit
End Sub

Sub focusto(x)
'將游標定位於某個欄位
document.frmOrder.elements(x).focus()
End Sub

-->
</script>

<form name="frmOrder">
<Select Name="FrmCountry" onchange="Javascript:funChgCountry(this.value);">
<option value="美國">美國</Option>
<option value="英國">英國</Option>
<option value="德國">德國</Option>
</Select>
<input type="text" name="FrmText" value="">

<input type="button" value="送出" onclick="VBScript:fieldcheck">

<Script language="Javascript">
function funChgCountry(x){
window.open("RtnVal.asp?country=" + x);
}
</Script>
</form>

有點長,您先試試看吧~~^^
19 回應者: 汝兒 日期: 2004/5/4 上午 11:18:00
耶!!!我終於試出來了~~
是我太豬頭了…
其實只要在button onclick時,讓他執行"fieldcheck()"就好,
我之前是省略了括號,所以一直不行…
加上去之後,就可以了~~
謝謝各位熱情相助!!!
好心會有好報的…
20 回應者: 汝兒 日期: 2004/5/4 上午 11:48:00
謝謝maduka~~
我有再試試您的方法,也是ok的....
但我還有另一個問題想請教一下,
我想在asp程式裡,直接呼叫funChgCountry這個函式,
可以這樣嗎??
感激不盡....
21 回應者: maduka 日期: 2004/5/4 下午 12:12:00
funChgCountry是Client端的Script
ASP是無法呼叫使用的~^^
22 回應者: 汝兒 日期: 2004/5/4 下午 02:29:00
感謝你~~我了解了!
你真是好心人!!