2008-09-05 29 views
6

demos cho hộp thoại jquery ui tất cả đều sử dụng chủ đề "flora". Tôi muốn có một chủ đề tùy chỉnh, vì vậy tôi đã sử dụng themeroller để tạo một tệp css. Khi tôi sử dụng nó, mọi thứ dường như hoạt động tốt, nhưng sau đó tôi thấy rằng tôi không thể kiểm soát bất kỳ phần tử đầu vào nào có trong hộp thoại (tức là, không thể nhập vào trường văn bản, không thể chọn hộp kiểm). Điều tra thêm cho thấy điều này xảy ra nếu tôi đặt thuộc tính dialog là "modal" thành true. Điều này không xảy ra khi tôi sử dụng chủ đề thực vật.Sự cố với hộp thoại jquery khi sử dụng themeroller css

Dưới đây là file js:

topMenu = { 
    init: function(){ 
     $("#my_button").bind("click", function(){ 
      $("#SERVICE03_DLG").dialog("open"); 
      $("#something").focus(); 
     }); 

     $("#SERVICE03_DLG").dialog({ 
      autoOpen: false, 
      modal: true, 
      resizable: false, 
      title: "my title", 
      overlay: { 
       opacity: 0.5, 
       background: "black" 
      }, 
      buttons: { 
       "OK": function() { 
        alert("hi!"); 
       }, 
       "cancel": function() { 
        $(this).dialog("close"); 
       } 
      }, 
      close: function(){ 
       $("#something").val(""); 
      } 
     }); 
    } 
} 

$(document).ready(topMenu.init); 

Đây là html mà sử dụng các chủ đề thực vật:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 
<title>sample</title> 
<script src="jquery-1.2.6.min.js" language="JavaScript"></script> 
<link rel="stylesheet" href="flora/flora.all.css" type="text/css"> 
<script src="jquery-ui-personalized-1.5.2.min.js" language="JavaScript"></script> 
<script src="TopMenu.js" language="JavaScript"></script> 
</head> 
<body> 

<input type="button" value="click me!" id="my_button"> 
<div id="SERVICE03_DLG" class="flora">please enter something<br><br> 
<label for="something">somthing:</label>&nbsp;<input name="something" id="something" type="text" maxlength="20" size="24"> 
</div> 

</body> 
</html> 

Đây là html mà sử dụng các chủ đề ThemeRoller tải:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 
<title>sample</title> 
<script src="jquery-1.2.6.min.js" language="JavaScript"></script> 
<link rel="stylesheet" href="jquery-ui-themeroller.css" type="text/css"> 
<script src="jquery-ui-personalized-1.5.2.min.js" language="JavaScript"></script> 
<script src="TopMenu.js" language="JavaScript"></script> 
</head> 
<body> 

<input type="button" value="click me!" id="my_button"> 
<div id="SERVICE03_DLG" class="ui-dialog">please enter something<br><br> 
<label for="something">somthing:</label>&nbsp;<input name="something" id="something" type="text" maxlength="20" size="24"> 
</div> 

</body> 
</html> 

Như bạn thấy, chỉ có tệp css được tham chiếu và tên lớp khác nhau. Bất kỳ ai có một đầu mối về những gì có thể sai?

@ David: Tôi đã thử nó và dường như không hoạt động (không phải trên FF hoặc IE). Tôi cố gắng inline css:

style="z-index:5000" 

và tôi cũng đã thử nó tham khảo một file css bên ngoài:

#SERVICE03_DLG{z-index:5000;} 

Nhưng không ai trong số những công việc. Tôi có thiếu cái gì trong những gì bạn đề nghị?

Chỉnh sửa:
Giải quyết bằng brostbeef!
Vì ban đầu tôi đã sử dụng hệ thực vật, tôi đã giả định nhầm rằng tôi phải chỉ định thuộc tính lớp. Hóa ra, điều này chỉ đúng khi bạn thực sự sử dụng chủ đề thực vật (như trong các mẫu). Nếu bạn sử dụng các chủ đề tùy chỉnh, xác định một thuộc tính lớp gây ra hành vi lạ.

+0

Bạn vẫn gặp sự cố này ?? – MDCore

+0

Không chắc chắn lý do tại sao bạn đã xóa mã của mình và các liên kết được thay thế ... hiện đã bị hỏng nên không thể tham chiếu. – clairestreb

+0

oops, hoàn toàn quên mất điều đó. Tôi sẽ xem liệu tôi có thể chỉnh sửa bài đăng để mang lại mã không. – Ovesh

Trả lời

3

Tôi nghĩ đó là vì bạn có các lớp khác nhau.
<div id="SERVICE03_DLG" class="flora"> (thực vật)
<div id="SERVICE03_DLG" class="ui-dialog"> (tùy chỉnh)

Thậm chí với chủ đề thực vật, bạn vẫn sẽ sử dụng lớp ui-thoại để định nghĩa nó như một hộp thoại.

Tôi đã thực hiện các phương thức trước và thậm chí tôi chưa bao giờ xác định một lớp trong thẻ. jQueryUI nên chăm sóc điều đó cho bạn.

Thử loại bỏ thuộc tính lớp hoặc sử dụng lớp "ui-dialog".

+0

Cảm ơn bạn! Hóa ra đây thực sự là một vấn đề với hệ thực vật. Tôi sẽ chỉnh sửa câu hỏi để phản ánh nó. – Ovesh

1

Sau khi chơi với điều này trong Firebug, nếu bạn thêm thuộc tính z-index lớn hơn 1004 vào div mặc định, id của "SERVICE03_DLG", thì nó sẽ hoạt động. Tôi sẽ cho nó một cái gì đó cực kỳ cao, như 5000, chỉ để chắc chắn.

Tôi không chắc nó là gì trong CSS themeroller gây ra điều này. Họ có thể đã thay đổi hoặc bỏ qua thuộc tính vị trí của div đích mà nó biến thành một hộp thoại.

0

Người đàn ông, đây là một điều tốt. Tôi đã thử làm một loạt các thứ trên hai trang này. Bạn đã thử chỉ cần thoát khỏi CSS ra hoàn toàn và thử cả hai trang sau đó? Tôi đã sử dụng Firebug để xóa CSS khỏi tiêu đề trên cả hai trang và đầu vào vẫn hoạt động trên một trang chứ không phải trên trang khác - nhưng tôi có xu hướng tin rằng Firebug không xóa hoàn toàn CSS khỏi hiển thị và bạn sẽ nhận được kết quả khác nếu bạn thực sự xóa nó khỏi mã.

Tôi cũng thấy rằng bạn có thể dán văn bản vào hộp văn bản bằng chuột - nó sẽ không chấp nhận đầu vào bàn phím. Dường như không có bất kỳ trình xử lý sự kiện nào có thể can thiệp vào điều này.

1

Tôi đã thử triển khai chủ đề themeroller với hộp thoại và tab và hóa ra là CSS themeroller không hoạt động với jQuery chính thức!Đặc biệt là đối với hộp thoại và tab, họ đã sửa đổi các lớp phần tử từ các lớp jquery chính thức. Xem ở đây: http://filamentgroup.com/lab/introducing_themeroller_design_download_custom_themes_for_jquery_ui/

bình luận của người dùng:

3) với chủ đề được tạo ra mà tôi tải dường như chưa hoàn chỉnh - khi tôi cố gắng sử dụng nó tab của tôi (mà làm việc với hệ thực vật chủ đề, mã giống với tài liệu ví dụ) không được tạo kiểu theo các tab

Có khi chạy vào 3 Tôi nghĩ mình đã bị kẹt và phải hoàn nguyên bằng “thực vật”… Tôi đã phát hiện bằng cách đọc mã nguồn của tệp “demo” nếu tôi điều chỉnh html của mình và cung cấp các mục < li> Tôi đang sử dụng cho các tab của mình “ui-tabs- nav-item ”class sau đó nó sẽ hoạt động.

Chủ đề được tạo bởi themeroller là do đó không may là không đầy đủ. Nếu các công cụ tab không đầy đủ, điều đó làm cho tôi tự hỏi những gì khác không đầy đủ. Nó khá là bực mình. :(

tiếp theo là các nhà phát triển ThemeRoller bình luận:

3) Chúng tôi sẽ xem xét tại đó. Bạn đúng rằng các lớp học sẽ được plugin thêm vào. Tuy nhiên, hiện tại, có lẽ sẽ không ảnh hưởng gì nhiều đến việc chỉ thêm chúng vào đánh dấu của bạn để bạn có thể sử dụng chủ đề themeroller. Tuy nhiên, chúng tôi sẽ kiểm tra. Tôi nghĩ rằng các bộ chọn của chúng tôi có thể là dựa trên bộ chọn ui-tab gốc thay vào đó, nhưng tôi nghĩ rằng chúng tôi đã cố gắng không sử dụng các phần tử trong bộ chọn của chúng tôi. Hãy xem xét nó trên danh sách việc cần làm

Các vấn đề liên quan