在網頁中,我常用的是javascript的confirm指令,
但是預設值在『確定』,有沒有辦法放在『取消』呢?  image

 
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,也不會誤事了。

image

後記:
關於vbscript的MsgBox函數用法,藉由傳入的參數,
控制視窗內要『顯示幾個按鈕』,『預設在哪個按鈕』,『視窗內的icon指定哪種』?

可以變得很彈性,請參考MSDN