2012-02-16 32 views
6

Tôi đang tìm cách xác định thuộc tính giữ chỗ bên trong phần tử <g:SuggestBox>, trong GWT. Tôi biết rằng phần tử <input> cho phép chỉ định thuộc tính đó, nhưng tôi quyết định chuyển sang phần tử SuggestBox thay vì phần tử đầu vào.GWT SuggestBox có thuộc tính giữ chỗ

Có ai có thể giúp tôi không?

+0

Bạn có thể xác định bất kỳ thuộc tính bổ sung thích ứng [giải pháp này] (http://stackoverflow.com/questions/10450987/how-to-add-a-placeholder-to-a-gwt-text-input-field/38316205#38316205). –

Trả lời

8

Bạn nên tạo tiện ích SuggestBox tùy chỉnh của riêng mình, sau đó bạn có thể đặt thuộc tính trình giữ chỗ cho nó. Ví dụ:

public class CustomSuggestBox extends SuggestBox { 


private String placeHolderText = ""; 

    public String getPlaceHolderText() { 
    return placeHolderText; 
    } 

    public void setPlaceHolderText(String text) { 
    placeHolderText = text; 
    getTextBox().getElement().setAttribute("placeHolder", placeHolderText); 
    } 
} 

Vì vậy, bạn có thể đặt thuộc tính này trong giao diện người dùng.

<widgets:CustomSuggestBox ui:field="cSuggestBox" placeHolderText="someText" /> 

PS: Chỉ hoạt động trong trình duyệt hiện đại. Đối với việc thực hiện nó một cách chính xác cho các trình duyệt cũ cũng kiểm tra của bên thứ ba lib wogwt, nó có TextBoxWithPlaceholder lớp mà kéo dài TextBox:

/** 
* A text box that displays a placeholder string when empty 
* 
* <h3>CSS Style Rules</h3> 
* <ul class='css'> 
* <li>.wogwt-TextBoxWithPlaceholder { primary style }</li> 
* <li>.wogwt-TextBoxWithPlaceholder-placeholder { dependent style set when 
* the placeholder is displayed }</li> 
* </ul> 
*/ 

Trong trường hợp đó bạn có thể gửi thông điệp này TextBoxWithPlaceholder 's dụ để SuggestBox(SuggestOracle oracle, TextBoxBase box) constructor.

+0

Tôi không chắc chắn rằng mã này getTextBox(). GetElement(). GetStyle(). SetProperty ("placeholder", placeHolderText); đúng. Tôi nghĩ rằng nó nên được mô tả dưới đây. – user1545858

9

Phân lớp SuggestBox chắc chắn sẽ hoạt động.
Nếu bạn không muốn tạo ra một lớp bổ sung mà bạn cũng có thể dễ dàng thêm các placeholder đến một hiện SuggestBox bằng cách thiết lập thuộc tính trực tiếp:

SuggestBox suggestBox = new SuggestBox(); 
suggestBox.getElement().setAttribute("placeHolder", "SOME TEXT); 
2

Lưu ý rằng bạn sẽ nhận được một ngoại lệ nếu bạn gọi phương thức getElement() trước khi widget được thêm vào DOM. Vì vậy, nếu bạn muốn có một giải pháp cho phép bạn thiết lập các văn bản giữ chỗ trước khi nó được thêm vào DOM, và có nó xuất hiện khi nó đã được thêm vào, bạn có thể treo vào AttachEvent:

SuggestBox suggestBox = new SuggestBox(); 
// com.google.gwt.event.logical.shared.AttachEvent.Handler 
suggestBox.addAttachHandler(new Handler() { 
    @Override 
    public void onAttachOrDetach(AttachEvent event) { 
     if (event.isAttached()) { 
      suggestBox.getElement().setAttribute("placeHolder", "SOME TEXT); 
     } 
    } 
}); 
Các vấn đề liên quan