在網頁中,我常用的是javascript的confirm指令,
但是預設值在『確定』,有沒有辦法放在『取消』呢?
if (!confirm("確定是否XXX?")){
return false;
} else {
........
}
同事問了這個需求,因為以前WINDOWS應用程式,可以輕易達成,但網頁呢?沒試過?不過實驗到最後發現牽扯到了很多層面,成功了,也做個記錄。
重點:
1.需搭配vbscript的MsgBox函數。
2.為了可讓多隻程式快速使用,
使用jsp的 <%@ include file =… %>功能
程式:有兩支。
1.jsext.htm (擺放共用的javascript跟 vbscript函數)
本來想一起放到js檔裡面,但是js不接受。
2.test5.jsp (測試用jsp)
程式碼:
1.jsext.htm (View Source)
<script language="JavaScript">
var jsext_fonfirm_yn = 0; //記錄user按下的按鈕值
function confirm_yn(Msg,Title) {
txt = Msg;
caption = Title;
vbMsg_yn(txt,caption) //呼叫vb自製的確認視窗函數
return (jsext_fonfirm_yn==6); //回傳true false
}
</script>
<script language="VBScript">
Function vbMsg_yn(sTxt,sCaption)
//放置『是,否』按鈕,預設『否』按鈕 Return Value 6=Yes,7=No
selVal = MsgBox(sTxt,vbYesNo + vbDefaultButton2,sCaption)
jsext_fonfirm_yn = selVal
End Function
</script>
2.test5.jsp (View Source)
(只要藉由include file=”jsext.htm” 一行,
就不用每隻程式都複製上面的函數,
若您不是使用jsp,也沒關係!!
只要將上述函數拷貝下來將<%@ include file=..整行置換即可)
<%@ page language="java" contentType="text/html;charset=MS950" %>
<HTML>
<title>test</title>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=MS950">
<%@ include file ="jsext.htm" %>
</HEAD>
<BODY>
<h2>確認視窗 預設按鈕在NO</h2>
<hr>
<p>
<input type="button" onclick="diyconfirm();" value="test">
</BODY>
</HTML>
<script>
function diyconfirm(){
if (confirm_yn('是否要XXX? ','詢問視窗'))
alert("您按了『是』");
else alert("您按了『否』");
}
</script>
測試結果:果然預設在『否』上面了,使用者若是粗心
按下Enter,也不會誤事了。
後記:
關於vbscript的MsgBox函數用法,藉由傳入的參數,
控制視窗內要『顯示幾個按鈕』,『預設在哪個按鈕』,『視窗內的icon指定哪種』?
可以變得很彈性,請參考MSDN
留言列表