在網頁中,我常用的是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

文章標籤
全站熱搜
創作者介紹
創作者 味味A 的頭像
味味A

味味A

味味A 發表在 痞客邦 留言(0) 人氣(2,908)