2011-06-06 79 views
4

有誰知道如何去創造,將執行電話號碼格式的掩碼字段,喜歡這裏(___) ___-____
http://www.smartclient.com/smartgwt/showcase/#form_maskingGWT電話號碼屏蔽

+2

此格式僅在美國境內有效,無法處理國際號碼。你確定,你想要嗎? – nfechner 2011-06-06 20:49:43

+0

從這個演示中判斷出你不想填寫這樣的表單。我不是用戶體驗專家,但我相信有更好的方法比綠屏/終端像掩蔽。 – 2011-06-06 20:52:30

+0

這些是一些非常酷的基於jQuery的示例:http://www.catswhocode.com/blog/10-jquery-tutorials-for-working-with-html-forms – 2011-06-06 21:21:31

回答

7

更好的方法是讓用戶輸入他們想要的任何東西:「789-555-1234」或「(789)555-1234」或「7895551234」,然後當字段失去焦點時決定他們是否鍵入可以是電話號碼。如果是這樣,你可以將它重新格式化爲「(789)555-1234」。關於如何用正則表達式來做這種事情,有幾個相關的問題;只要確保你的正則表達式接受你改變用戶輸入的格式,否則編輯真的很煩人。

舉一個例子,看看當你在微軟的標準頁面設置對話框的左邊距字段中輸入「.5」時會發生什麼:當你將其標籤改爲「0.5」。

更新:這是GWT中的示例代碼來說明。爲了這個例子,假設有一個名爲「phoneContainer」的元素來放置文本框。GWT並沒有給你完整的java.util.regex包,但它足夠做到這一點:

private void reformatPhone(TextBox phoneField) { 
    String text = phoneField.getText(); 
    text = text.replaceAll("\\D+", ""); 
    if (text.length() == 10) { 
     phoneField.setText("(" + text.substring(0, 3) + ") " + text.substring(3, 6) + "-" + text.substring(6, 10)); 
    } 
} 


public void onModuleLoad() { 
    final TextBox phoneField = new TextBox(); 

    RootPanel.get("phoneContainer").add(phoneField); 
    phoneField.addBlurHandler(new BlurHandler(){ 
     public void onBlur(BlurEvent event) { 
      reformatPhone(phoneField); 
     } 
    }); 
} 
1

它看起來像你想創建自己的控件,它擴展了GWT輸入框,並將默認值設置爲所需的掩碼。然後處理onKeypress事件並根據需要更新字段(確保將光標位置設置爲正確的位置)。