簡體   English   中英

重新格式化輸入字段

[英]Reformatting input-fields

我想在提交時重新格式化HTML表單字段的內容。

例如:用戶輸入“ 1.234,56 ”(這是該語言環境中數字的有效格式),但是我想向服務器提交值“ 1234.56 ”。

我想聽聽其他人的經驗。 你怎么做到這一點?

我的第一個想法是onSubmit事件,它重新格式化內容。 但是,有沒有人對此有實施經驗?

還是一個更好的主意?


JavaScript始終可用。 如果使用Dojo容易得多,我可以使用它。

順便說一句:這實際上有點復雜,因為我也想對“模糊”進行重新格式化。 因此,用戶輸入“ 1234,56 ”(輸入格式)。 焦點更改時,應重新格式化為“ 1.234,56 ”(顯示格式)。 但是發送到服務器的實際值應為“ 1234.56 ”(機器格式)。
在輸入格式和顯示格式之間進行轉換應該很容易,但是也許所有這些都可以以某種巧妙的方式組合在一起。


編輯:這不適用於公共網站,因此有關依賴Javascript和類似內容的意見不相關。

好吧,想到的一個想法可能是專門使用Javascript,然后將實際輸入的值存儲到隱藏字段中。 然后捕獲文本框的onBlur Javascript事件,以調用根據您的要求設置值格式的函數。

最后,在表單提交時,訪問隱藏字段中存在的值,而不是文本框。

有了這些信息,我可能會執行以下操作:

模糊處理程序應

  1. 獲取輸入
  2. 驗證輸入-是數字嗎? 在范圍內嗎? 等等
  3. 轉換為規范化的格式以進行顯示(1.234,56)
  4. 將表單的[input]的值設置為規范化的表單

提交處理程序應

  1. 獲取輸入
  2. 驗證輸入-與上面相同
  3. 從特定於語言環境的值轉換為所需的服務器上的值。
  4. 將表單的[input]的值設置為轉換后的值。
  5. 提交表格。

請記住,無論您執行多少客戶端驗證,您仍然需要執行服務器端驗證。 但是我會盡我所能地使用Javascript進行驗證,只是因為我更願意讓用戶知道他的表單值將失敗,而不必先向服務器發送。

另外,我可能會更改服務器端操作,以便能夠處理許多語言環境中的金額。 那會給我更多關於Javascript提交處理程序的回旋余地。

您提出問題的方式基本上是希望在客戶端進行驗證,在任何情況下都不可以。 只需提交數字並使用特定於語言環境的處理在服務器端對其進行驗證。 如果您想立即獲得反饋,請使用AJAX,但要在服務器端進行驗證-您可以對AJAX請求進行onBlur()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM