JavaScript界面傳值與前后台互調


     話說曾在校時,前端的第一門課程HTML靜態網頁設計,其老師,真是應了他的名字: 路遙知馬力。 整個學期硬是全部在 Dreamwear 中進行拖拽控件來教學,未曾教授一句代碼。成功忽悠了全體學生,課上一本正經的胡說八道,對拖拽控件的心得侃侃而談,想想也是諷刺,同期的學生都是純手寫編輯界面,我們卻依舊沉浸在設計下的拖拽操作中,帶來的就是界面看起來還像回事,只是源碼慘不忍睹,后來有幸在網上觀看了燕十八老師的HTML系列視頻,猶如冬服參湯,醍醐灌頂。使我終沒有在拖拽的路上越走越遠。

1.前台界面互調傳值,就是子界面與父界面之間的那些事

   ①父界面傳值到子界面  在子界面中使用opener方法來說獲取父界面元素

    <script type="text/javascript">
        function getfather() {
            var a = window.opener.document.getElementById("txt1").value;
            var b = window.opener.document.getElementById("txt2").value;
            console.log(a);
            console.log(b);
        }
       
    </script>

如上圖所示,txt1、txt2 為父界面中兩個textbox 的 ID 屬性值,這樣就可以直接接受值,純前台界面之間的操作

   ②子界面傳值到父界面,同樣可以在子界面中用 opener 來解決,同上,只是給等號右邊的表達式賦值而已。當然,方法有很多種,解決問題時只需要一種,對於初學者,其他的方法了解就可,需要先是廣度,深度的事情,研究起來內容很多,需要下大量的功夫,時間也是等倍計算。當然我這里不是誤導,時時刻刻積累,每天睡前想想 又 get 到哪些新技能。

本着技術不夠,數量來湊的思想來說說Web from 中前后台的控件的情況

2. 函數執行順序,對於一般按鈕而言,可以設置 OnClick、OnClientClick、OnCommand事件,執行順序如下:

     ①OnClientClick  調用JS中設置的方法

     ②OnClick 按鈕單擊事件,在OnClientClick 事件之后執行

     ③OnCommand 在OnClick 事件執行,一般是結合CommandName 屬性一起使用,當界面上有多數按鈕時,可以進行標記

3. 前台方法中設置判斷,是否執行 OnClick 事件

 <script type="text/javascript">
     function Todu() {
         var txtbd = document.getElementById("txtbd").value;
         if(parseInt(txtbd)!=2) {
             alert("回答錯誤,無法進行進入後台");
             return false;     //添加此處
         }
         else {
             alert("我將要執行後台方法");
         }
     }
 </script>

 

  默認情況下,OnClientClick  事件執行完,是要執行 OnClick 事件的,在前台做判斷時, 需要設置兩個地方,其一是在方法中添加,如上圖注釋處,其二如下圖,在OnClientClick  事件中加入 return false()

<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lab" runat="server"></asp:Label>
        <br />
        <asp:TextBox ID="txtbd" runat="server"></asp:TextBox>
        <asp:Button ID="btn_to" runat="server"  Text="ToBaidu" OnClick="btn_to_Click" OnClientClick="Todu(); return false();"/>
    </div>
    </form>
</body>

4.后台調用前台方法

   ① 在Page_load 里面給某個按鈕綁定前台方法 (注:和前端調用略有不同,false 后面沒有括號) 

       protected void Page_Load(object sender, EventArgs e)
       {
           btn_to.Attributes.Add("onclick", "javascript:return Todu(); return false;");
       }

  ② 在某個按鈕事件或方法中 綁定前台方法

        protected void btn_id_Click(object sender, EventArgs e)
        {
            //在前台腳本裡面增加一個script: window.open('B.aspx');
            this.ClientScript.RegisterStartupScript(this.GetType(), "", "window.open('B.aspx')", true);
            //在前台腳本裡面增加一個script: icc();    注:沒有true
            this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>icc();</script>");
            //在前台腳本裡面增加一份script:    alert("123");   注:單/雙引號
            Response.Write("<script type='text/javascript'>alert('123');</script> ");
          
        }

5. 前台調用后台方法

        public int After() 
        {
            return 233;
        }

        public int After2(int a, int b) 
        {
            return a + b;
        
        }

   比如后台有以上兩個方法,一個帶參數,一個不帶參數,那么在前台的方法中,若調用后台方法,如下:

     function iafter() {
         var b = "<%=After()%>";
         alert(b);
     }

     function iafter2()
     {
         var b = "<%=After2(5,8)%>";
         alter(b);
     }

 以上這些都是很淺顯的點,不管怎樣,也是記錄我這個小白路上的一個腳印,權當作學習筆記。

 

----------------------------------市人皆大笑,舉手揶揄之


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM