2013-07-25 31 views
8

Tôi có nút di động jQuery được kết nối với POST ajax. Nếu POST thất bại, nút di động jQuery vẫn được ép thay vì của `` nảy lên". Ý tưởng Bất kỳ?Nút di động jQuery vẫn được nhấn

+2

Bạn có thể hiển thị một số mã không? Chức năng gọi là bấm nút có thể hữu ích –

+0

Có thể bạn có một lớp CSS "ép" không bị xóa? – Deborah

+0

Bản sao có thể có của [Làm thế nào để bạn loại bỏ trạng thái hoạt động của một nút bằng jQuery Mobile?] (Http://stackoverflow.com/questions/7507099/how-do-you-remove-a-buttons-active-state-with-jquery -mobile) – Flimzy

Trả lời

7

Nó có thể thực hiện một cách dễ dàng

Dưới đây là một ví dụ jsFiddle làm cho một trong những câu trả lời trước của tôi:. http://jsfiddle.net/3PhKZ/7/

Nếu bạn có một cái nhìn có dòng mã này:

$.mobile.activePage.find('.ui-btn-active').removeClass('ui-btn-active ui-focus'); 

Nó sẽ cố gắng tìm nút nhấn trên trang hiện tại đang hoạt động, nếu thành công, nó sẽ xóa 2 lớp chịu trách nhiệm về trạng thái nhấn nút. Thật không may là giải pháp CSS tinh khiết là không thể ở đây. Bạn có thể kiểm tra ví dụ này, chỉ cần bình luận hàng đầu và xem điều gì sẽ xảy ra.

Một bộ chọn điều cuối cùng $ .mobile.activePage chỉ có thể được sử dụng trong các sự kiện pagebeforeshow, pageshow, pagebeforechange, pagechange, pagebeforehide và pagehide để tính đến điều này.

Trong trường hợp bạn không thể sử dụng bộ chọn này chỉ cần thay thế nó với một id trang, như thế này:

$('#pageID').find('.ui-btn-active').removeClass('ui-btn-active ui-focus'); 

Vì vậy, mã cuối cùng của bạn sẽ trông như thế này:

$.ajax("example.php") 
.success(function() { doStuff(); }) 
.error(function() { 
    $('#pageID').find('.ui-btn-active').removeClass('ui-btn-active ui-focus'); 
}) 
+0

Cảm ơn! Một cái gì đó như thế này là đơn giản và có vẻ là làm việc: 'Next page' '$ ('# foobar'). RemoveClass ('ui-btn-active ui-focus');' Điều này có đủ tốt không? – jaynp

+0

hmmm nhưng không hoạt động với: '' – jaynp

+0

Cũng không phải bằng nút < Đăng nhập' – jaynp

0

Thêm một điều khoản lỗi để xử lý AJAX của bạn mà bật nút quay lại.

$.ajax("example.php") 
.success(function() { doStuff(); }) 
.error(function() { /*code to unpress button here*/ }) 
+0

Tôi có một mệnh đề như vậy. Tôi quan tâm đến mã để bỏ nút. – jaynp

+0

Bạn nên đăng mã của mình trong câu hỏi để chúng tôi có thể xem cách bạn đã triển khai nút của mình. –

0

Đối với những folks ra có sử dụng "đầu vào" chứ không phải "neo" làm nút. Khi sử dụng ví dụ "gửi" và "đặt lại" nút và nhấn chúng vẫn hoạt động, đôi khi không mong muốn tùy thuộc vào các hành động được thực hiện khi các nút được nhấp.

Tôi không chắc chắn nếu nó là hành vi mong đợi, tôi đã đọc đó là một lỗi di động jQuery, nhưng hành vi này vẫn còn hiện diện ít nhất là trong jQM 1.3.2

Một có các Bí quyết là để loại bỏ các lớp hoạt động như đã nêu tuy nhiên những điều này trở nên khó khăn vì lớp không được thêm vào thẻ đầu vào, i * t được thêm vào một phụ huynh DIV * được tạo bởi tất cả các thứ xấu xí xung quanh "đầu vào" tạo kiểu cho nút, đó là lý do loại bỏ lớp đang hoạt động khi chọn đầu vào không hoạt động.

Bằng cách phân tích mã HTML được tạo ra bởi jquery thoại di động một cách giải quyết là:

loại bỏ các lớp đang hoạt động trên phụ huynh đầu vào thay vì các yếu tố đầu vào thực tế.

$ ('. Mybutton_class_or_ID'). Parent(). RemoveClass ('ui-btn-active');

Tôi thích phương pháp này thay vì xóa tất cả các lớp đang hoạt động trên toàn bộ trang trong trường hợp bạn muốn chọn lọc hơn với loại bỏ lớp học.

+0

không hoạt động – marcel

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