Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Jquery không chạy được trong content của MasterPage?

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    13

    Thumbs up 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

    Code:
    $(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
    Code:
     
    <%@ 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

    Code:
    <%@ 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
    Attached Files Attached Files

  2. #2
    Ngày gia nhập
    10 2009
    Bài viết
    149

    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 gia nhập
    04 2010
    Nơi ở
    Trên hành tinh thứ ba tính từ Mặt trời
    Bài viết
    202

    Trích dẫn Nguyên bản được gửi bởi NgocTuanz Xem bài viết
    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..
    Microsoft Student Partner
    University of Information Technology - VNUHCM
    Visit my blog: My power is my mind

  4. #4
    Ngày gia nhập
    07 2011
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi xuanchien Xem bài viết
    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 gia nhập
    04 2010
    Nơi ở
    Trên hành tinh thứ ba tính từ Mặt trời
    Bài viết
    202

    Trích dẫn Nguyên bản được gửi bởi ttt198x Xem bài viết
    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
    Code:
    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:
    Code:
    <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ó.
    Microsoft Student Partner
    University of Information Technology - VNUHCM
    Visit my blog: My power is my mind

  6. #6
    Ngày gia nhập
    10 2009
    Bài viết
    149

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

    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 gia nhập
    07 2011
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi xuanchien Xem bài viết
    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
    Code:
    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:
    Code:
    <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!
    Đã được chỉnh sửa lần cuối bởi ttt198x : 30-08-2011 lúc 11:26 AM.

  8. #8
    Ngày gia nhập
    07 2011
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi NgocTuanz Xem bài viết
    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
    Code:
    $(document).ready(function(){
        $('.txtHo').focus(function(){
            $('.txtHo').css('background-color','red');
        });
        $('.txtHo').blur(function(){
            $('.txtHo').css('background-color','transparent');
        });
        
    })
    dk.aspx
    Code:
    <%@ 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>

Các đề tài tương tự

  1. Lỗi "sự kiện click của button trong ajax modalpopup của trang masterpage không chạy" là do đâu?
    Gửi bởi TearKoshan trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 14-10-2012, 02:29 PM
  2. Jquery không chạy thi đặt đoạn script trong masterpage
    Gửi bởi khanhduy.8hpm trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 14-07-2012, 11:53 AM
  3. Làm sao lấy được đối tượng trong MasterPage bằng JQuery
    Gửi bởi cudang9005 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 4
    Bài viết cuối: 05-05-2012, 10:24 PM
  4. Truy xuất đối tượng trong Masterpage từ 1 trang không kế thừa Masterpage
    Gửi bởi hc1987 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 3
    Bài viết cuối: 16-06-2011, 09:13 AM
  5. Sử dụng CSS background-image trong Masterpage.master không chạy trên localhost?
    Gửi bởi canhkho trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 22-04-2011, 07:37 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn