Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 8 của 8
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Jquery không chạy được trong content của MasterPage?

    Chào các bạn mình có file jquery như sau:

    dk.js

    Mã:
    $(document).ready(function(){
         $('#txtHo').focus(function(){
                 $(this).css('background-color','red');
    });
         $('#txtHo').blur(function(){
                  $(this).css('background-color','transparent');
    
               
    });
    })
    mình bỏ nó vào trang

    dk.aspx
    Mã:
     
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="dk.aspx.cs" inherits="Pages_dk" %>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <%---------------Gọi jquery ở đây------------------------%>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script src="../JS/dk.js" type="text/javascript"></script>
    
    </head>
    <body>
          <asp:Label ID="lb1" Text="Họ:" runat="Server"></asp:Label>
          <asp:TextBox ID="txtHo" runat="server"></asp:Textbox>
    </body>
    </html>
    Thì jquery chạy ngon lành (mình focus vào txtHo thì background của nó sẽ có màu đỏ, mất focus thì background trở lại bình thường)

    Vấn đề mình muốn hỏi ở đây là khi mình dùng masterpage cho trang dk.aspx và gọi jquery trong content thì nó không chạy nữa

    Mã:
    <%@ Page Language="C#" MasterPageFile="~/Pages/dangky.master" AutoEventWireup="true" CodeFile="DangKy.aspx.cs" Inherits="Pages_DangKy" %>
        
    <asp:Content ID="MyContent" ContentPlaceHolderID="DK"  runat="server">
    <%---------------Gọi jquery ở đây------------------------%>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script src="../JS/dk.js" type="text/javascript"></script>
    
    <asp:Label ID="lb1" Text="Họ:" runat="Server"></asp:Label>
    <asp:TextBox ID="txtHo" runat="server"></asp:Textbox>
             
    </Content>
    Mong các bạn nhiệt tình chỉ giúp. Thanks!

    Đây là pro của mình

  2. #2
    Bạn bỏ 2 link gọi jQuery trong cặp thẻ <head> nhé, trong content nó đâu chạy được jQuery.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi NgocTuanz
    Bạn bỏ 2 link gọi jQuery trong cặp thẻ <head> nhé, trong content nó đâu chạy được jQuery.
    Bạn bỏ vào trong thẻ Content nó vẫn chạy được bình thường. Nhưng người ta thường đặt trong <head> để sử dụng cho nhiều trang khác nhau.
    Về vấn đề của bạn thì khi bạn đặt 2 control trong <asp:Content> thì ID của 2 control khi chuyển xuống Client không còn là txtHo và txtTen nữa mà nó sẽ trở thành một cái ID khác dài hơn, ví dụ ctl00_MyContent_txtHo. Do đó, đoạn code jquery của bạn không tìm thấy 2 control với id txtHo và txtTen nữa.
    Cách giải quyết điều này là bạn có thể viết đoạn javascript đó ngay trong file ASPX và tham chiếu đến 2 Control như sau:
    $("#<%= txtHo.ClientID %>").focus(.v.v..

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi xuanchien
    Bạn bỏ vào trong thẻ Content nó vẫn chạy được bình thường. Nhưng người ta thường đặt trong <head> để sử dụng cho nhiều trang khác nhau.
    Về vấn đề của bạn thì khi bạn đặt 2 control trong <asp:Content> thì ID của 2 control khi chuyển xuống Client không còn là txtHo và txtTen nữa mà nó sẽ trở thành một cái ID khác dài hơn, ví dụ ctl00_MyContent_txtHo. Do đó, đoạn code jquery của bạn không tìm thấy 2 control với id txtHo và txtTen nữa.
    Cách giải quyết điều này là bạn có thể viết đoạn javascript đó ngay trong file ASPX và tham chiếu đến 2 Control như sau:
    $("#<%= txtHo.ClientID %>").focus(.v.v..
    Cách bạn hướng dẫn mình làm theo thì được, nhưng code phần javacript rất nhiều, liệu viết chung trong file ASPX thì có hợp lý?...không biết có cách nào khác sao cho Javascript ở riêng 1 file rồi gọi vào trang ASPX. Mong được chỉ giáo tiếp.Thanks!

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi ttt198x
    Cách bạn hướng dẫn mình làm theo thì được, nhưng code phần javacript rất nhiều, liệu viết chung trong file ASPX thì có hợp lý?...không biết có cách nào khác sao cho Javascript ở riêng 1 file rồi gọi vào trang ASPX. Mong được chỉ giáo tiếp.Thanks!
    Nếu bạn muốn viết riêng Javascript thì bạn nên tìm cách phân chia hàm sao cho nó nhận vào tham số là đối tượng cần hiệu ứng. Bây giờ xét theo trường hợp của bạn thì mình sẽ viết hàm sau trong file dk.js
    Mã:
    function registerEvent(control){
         control.focus(function(){...});
         control.blur(function(){....});
    }
    Khi đó, trong file ASPX mình có thể viết một đoạn Javascript nhỏ như sau:
    Mã:
    <script>
    $(document).ready(function(){
         registerEvent($("#<%= txtHo.ClientID %>"));
    }
    </script>
    Mình chưa có test các đoạn code này nhưng hy vọng là không có vấn đề gì với nó.

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cách thủ công hơn là cho cái txtHoTen có class ='txtHo'.
    rồi trong code jQuery chỉ cần chỉ đến class $('.txtHo').focus..

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi xuanchien
    Nếu bạn muốn viết riêng Javascript thì bạn nên tìm cách phân chia hàm sao cho nó nhận vào tham số là đối tượng cần hiệu ứng. Bây giờ xét theo trường hợp của bạn thì mình sẽ viết hàm sau trong file dk.js
    Mã:
    function registerEvent(control){
         control.focus(function(){...});
         control.blur(function(){....});
    }
    Khi đó, trong file ASPX mình có thể viết một đoạn Javascript nhỏ như sau:
    Mã:
    <script>
    $(document).ready(function(){
         registerEvent($("#<%= txtHo.ClientID %>"));
    }
    </script>
    Mình chưa có test các đoạn code này nhưng hy vọng là không có vấn đề gì với nó.
    Mình test theo cách của bạn nhiều lần rồi mà nó vẫn không chạy..dù sao mình vẫn cảm ơn bạn nhiều!

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi NgocTuanz
    Cách thủ công hơn là cho cái txtHoTen có class ='txtHo'.
    rồi trong code jQuery chỉ cần chỉ đến class $('.txtHo').focus..
    À cách này của bạn thì được đó, mình làm theo nó chạy ok. Thanks bạn nhiều nhe!

    dk.js
    Mã:
    $(document).ready(function(){
        $('.txtHo').focus(function(){
            $('.txtHo').css('background-color','red');
        });
        $('.txtHo').blur(function(){
            $('.txtHo').css('background-color','transparent');
        });
        
    })
    dk.aspx
    Mã:
    <%@ Page Language="C#" MasterPageFile="~/Pages/dangky.master" AutoEventWireup="true" CodeFile="dk_UseMasterPage.aspx.cs" Inherits="Pages_dk_UserMasterPage" %>
    
    <asp:Content ID="MyContent" ContentPlaceHolderID="DK" runat="server">
    <%--Gọi jquery ở đây--%>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script src="../JS/dk.js" type="text/javascript"></script>
     <div>
             <asp:Label ID="lb1" Text="Họ:" runat="server" ></asp:Label>
             <asp:TextBox ID="txtHo" Class="txtHo" runat="server"></asp:TextBox>
             
        </div>
        
    </asp:Content>

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •