2012-03-11 31 views
7

Tôi đang cố gắng để có được một vùng văn bản input và một nút submit được đính kèm ở bên phải của nó. Lý tưởng nhất, cả hai sẽ cùng nhau sử dụng 100% chiều rộng và chỉ cạnh nhau.JQuery Mobile - Định vị nút nhập bên cạnh vùng văn bản đầu vào

Tôi đã cố gắng chơi xung quanh với ui-grid-a và các tùy chọn tương tự nhưng mọi thứ đều thất bại thảm hại. Bạn có thể thấy một số trang phục there. Tất cả chúng đều xấu xí nhưng điều phức tạp nhất là lấy hai phần tử cạnh nhau với một phần có độ rộng cố định (nút) và một phần có độ rộng cố định (do đó không cố định cũng như phần trăm).

Bạn có ý tưởng nào về cách hiển thị chính xác không?

Trong một jQuery giấc mơ thế giới sẽ có một số tích hợp chức năng vào nhóm những người điều khiển (giống như <fieldset data-role="controlgroup" data-type="horizontal" data-role="fieldcontain"> cho nhóm hộp kiểm. Nhưng nó không có vẻ như vậy.

Cảm ơn rất nhiều sự giúp đỡ của bạn,

Mad

Trả lời

1

Tôi đã tìm thấy câu trả lời mới cho những người trong số các bạn đang xem chủ đề này.

Tôi thấy nó tốt hơn nhiều về mặt tích hợp với jQuery Mobile. Tuy nhiên, nó có thể dễ bị tổn thương khi nâng cấp trong jQuery Mobile vì nó dựa vào cách tệp hình ảnh biểu tượng được tổ chức.

tôi chỉ cần thêm quy tắc này CSS:

.ui-icon-searchfield:after {background-position: -252px !important;} 

Và biểu tượng kỳ diệu biến thành một data-icon="check". Chính xác những gì tôi đang tìm kiếm! Bạn có thể chọn bất kỳ biểu tượng nào bạn muốn bằng cách thay đổi độ lệch và nhìn vào images/icons-18-white.png để ánh xạ biểu tượng.

Tất nhiên bạn sẽ muốn tinh chỉnh bộ chọn để bạn chỉ nhắm mục tiêu các ô nhập bạn muốn thay đổi.

Tận hưởng tính năng hack.

0

Sau một cuộc thảo luận hiệu quả với adamdehaven, nó chỉ ra rằng:

nút
  • một validate là hầu hết thời gian không cần thiết và chống lại logic của ứng dụng di động. Tốt hơn là sử dụng <input type="search" /> cho các sự cố như vậy
  • Khuôn khổ không cho phép tùy chỉnh biểu tượng cho nội dung type="search".

Để thực hiện điều này, tôi đặt cùng một bản hack xấu xí mà bạn có thể thấy there. Trừ khi bạn phóng to khá nhiều, bạn sẽ không thấy sự khác biệt với số type="search" thông thường bên cạnh màu xám đậm hơn. Tuy nhiên, tôi nghi ngờ giải pháp này có thể dễ bị tổn thương do những thay đổi nhỏ đối với khung trong tương lai.

Một giải pháp khác là trực tiếp kéo biểu tượng ra và tự ghi đè lên nút biểu tượng nhà riêng trên input. Nó sẽ mạnh hơn một chút (vì ít nhất là nút sẽ không dựa trên khung công tác) nhưng yêu cầu một vài thay đổi nhanh chóng trong photoshop để kéo biểu tượng ra và đặt nó vào một tệp propper.

+0

tôi tìm thấy một giải pháp khác mà Tôi đã đăng sau. Hãy tham khảo và chọn tùy chọn nào phù hợp nhất với bạn. –

2

cách tôi giải quyết vấn đề này là làm nổi hộp đầu vào bên cạnh nút, sau đó đặt pagebeforeshow đặt kích thước của hộp nhập thành chiều rộng cửa sổ trừ đi kích thước của nút.

+0

Cách tiếp cận này có xử lý người dùng nghiêng thiết bị của họ và thay đổi tỷ lệ khung hình không? Làm thế nào về việc tái kích thước của một cửa sổ? – veeTrain

+0

Nếu bạn đang sử dụng điện thoại, v.v ... thì hãy chạy lại chức năng định cỡ khi nghiêng thiết bị. Bạn cũng có thể chỉ thiết lập mọi thứ dưới dạng phần trăm. Đối với sự thay đổi kích thước cửa sổ, tôi đoán bạn có thể làm một cái gì đó tương tự trong jquery để phát hiện khi kích thước của cửa sổ thay đổi, nhưng tôi đã không phải giải quyết vấn đề cụ thể này được nêu ra. – mike029

12

ẩn trong jQuery Mobile own documentation Tôi tìm thấy một cách tiếp cận mà chỉ làm việc tốt cho hộp tìm kiếm tôi + nút tìm kiếm thực hiện.

Trong trang đó, họ đang so sánh mọi thứ song song bằng cách sử dụng bố cục đơn giản <table>, điều này cũng giúp tôi dựa vào điều này. Trong khi các bảng KHÔNG phải là tài nguyên truy cập để thực hiện bố cục/thiết kế tốt, nó cực kỳ hiệu quả, đơn giản và phá vỡ nhiều sự phức tạp của các cách giải quyết mà tôi thấy ở đây. Đây là cách tiếp cận của tôi có thể làm cho số jsfiddle you linked của bạn. Xem lần lặp thứ tư.

Nói cách khác, do tính chất phức tạp của cách jQuery Mobile xây dựng trang, hãy thêm vào div và kiểu không có trong đánh dấu của bạn, v.v., đây có thể là lựa chọn tốt nhất cho trường hợp cụ thể này:

  • Muốn hai cột mục có cột thứ hai có chiều rộng cố định.
  • Trường hợp cột đầu tiên mở rộng để lấp đầy chiều rộng của màn hình về thay đổi kích thước.
  • Nơi bạn muốn các yếu tố bao gồm toàn bộ chiều rộng của thiết bị.

(Đáng chú ý, nếu bạn muốn tinh chỉnh bất kỳ các khía cạnh đặc biệt, một số padding CSS đơn giản hoặc xếp thẳng nên làm các trick bắt đầu với giải pháp cơ sở này)

<table style='width:100%'><tr> 
    <td> 
     <input type='text' (or type='search') /> 
    </td> 
    <td style='font-size:80%; width:7em'> 
     <input type='submit' value='Submit' /> 
    </td> 
</tr></table> 

Rõ ràng, bạn nên name và cung cấp cho một số id cho các mục này nếu bạn muốn đăng chúng ở đâu đó hoặc thao tác chúng trong javascript. Hy vọng rằng điều này chứng tỏ hữu ích cho người khác không được đưa ra bởi bản chất của <table> s. Tôi đã không thể nhìn thấy một nhược điểm để tiếp cận này bằng cách sử dụng giao diện đơn giản của jQuery Mobile/theming.

Cuối cùng, bạn có thể muốn dừng lại và tự hỏi mình liệu nút gửi có cần thiết hay không. Trong các thiết bị di động như safari di động, có một nút trên bàn phím có nhãn "Go" bất cứ khi nào các phần tử nhập biểu mẫu đang được tương tác. Điều này hoạt động giống như khóa trả về và có thể gửi cụm từ tìm kiếm. Tôi chưa xem xét tùy chọn này trên các trình duyệt khác tại thời điểm này.

(Đây không phải là một giải pháp để cạnh tranh với cách tiếp cận của bạn để chuyển sang biểu tượng của hộp tìm kiếm. Đó là rất thông minh nhưng dường như không có gì câu hỏi ban đầu của bạn là gì.)

+1

Cảm ơn bạn đã đề xuất! Đúng là đôi khi bảng 'cũ' tốt có thể cứu chúng ta rất nhiều rắc rối. Tôi biết rằng các giải pháp của tôi trôi dạt một chút so với mục tiêu ban đầu của tôi khi tôi nhận ra rằng loại nút đầu vào cạnh nhau này không thực sự phù hợp với triết lý di động jquery. –

+0

Không phải là vấn đề Mad Echet; cảm ơn vì đã đăng cùng một câu hỏi mà tôi đã gặp.Toàn bộ khuôn khổ có vẻ trái ngược với việc đặt nó ra theo cách này; và tôi thấy công cụ cột/'ui-grid-a' rất cồng kềnh. Bạn đã kết thúc việc xóa nút? – veeTrain

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