2014-03-27 18 views
1

AM和AM試圖找出什麼是解決下面提到的問題jQuery驗證插件 - 數字屬性使用驗證插件,以確定科學記數法

我有一個小數場[文本框],並允許用戶的最佳方式只輸入十進制數,驗證爲

someDecimal: { 
     required: true, 
     number: true 
    } 

第一次保存沒有任何問題。當用戶嘗試編輯的字段現在文本框將有一個科學記數法從數據庫之際,一個下面

1.23456789123457E+15 

因此驗證被觸發saing它不是一個有效的number.But它與科學記數法的數字。

我該如何處理這個問題並且如果它是一個有效的符號

感謝addMethod

+0

just using => required:true,number:true,如何驗證十進制數? –

+0

我認爲你需要添加自定義函數來解決這個問題,這意味着在自定義函數中驗證所需的類型的值來驗證值。 – pikrut

回答

1

你不必與jQuery驗證的一個問題,所以我不認爲你應該解決與jQuery驗證這個問題。

您正以某種方式驗證用戶輸入的數據......在您的情況下,使用number規則。據推測,這只是你想要的......一個通過number規則的數字。

現在,當您從數據庫中的值填充表單時,它將以科學記數法中的字符串形式返回。這個問題不應該與您的客戶端驗證有任何關係。換句話說,如果一個字符串(或科學記數法)首先是無效的輸入,那麼你當然不希望有一個jQuery驗證規則允許這些類型的字符串。

如果您只允許用戶在此表單中輸入某種類型的編號,則必須編寫您的服務器端代碼,以便僅使用該編號重新填充表單。

因此,在您的服務器端代碼中,從數據庫檢索值並使用數據填充表單的代碼,只需從數據庫中取值並將其轉換爲可接受的數字,即同一類型的數字用戶最初輸入的格式。

由於您從未提及過您的服務器端語言,因此無法提供確切的代碼。但是,例如,這可以通過PHP以幾種方式完成。

我的解決方案有很多優點:用戶可以看到預先填寫的數字,格式與他預期輸入的格式相同。客戶端上的所有內容都被視爲數字並輸入。服務器端/數據庫中的所有內容都以科學記數法處理,並且不會被用戶隱藏。

+0

謝謝,我正在使用C#和我做了一些關於該部分的分析。只是想知道在所有的方式來處理與jquery自定義函數的tis?是的,我曾嘗試使用正則表達式部分,但沒有解決! – Peru

+0

@Peru,我絕對不會在客戶端做一些與GUI無關的事情,並且可以在服務器端輕鬆實現。想一想,客戶端功能是爲了更好的用戶體驗,但可以被打破或繞過並取決於瀏覽器版本。服務器端功能更可靠,並且獨立於用戶的設備。 – Sparky

0

使用自定義功能()

var stri = value.val(); 
if(typeof stri === 'number' && isFinite(stri)) //returns true if number 
    return true; 
else 
    return false; 
+0

仍然1。23456789123457E + 15被認爲是一個帶有這個自定義函數的字符串 – Peru

+0

在這種情況下,我會遵循@Sparky的建議。然而,對於任何人到達這裏尋找一種方式來讓用戶以科學記數法輸入數字,請查看[驗證JavaScript中的十進制數字 - IsNumeric()](http://stackoverflow.com/a/1830844/456456) –