2016-11-15 76 views
-2

之前我有一個ISBN查找。它必須是10個字符。我有一個自定義驗證規則來檢查。但是我的很多客戶都在複製和粘貼,當他們做的時候,他們往往會在開始或結束時獲得額外的空間。所以我想檢查字符串之前或之後的空白,並將其更新爲第一個。然後運行正則表達式。如果失敗(不是字母數字或超過10位數字),則顯示錯誤消息。地帶的空白和更新值的驗證規則

這裏是我當前的自定義的驗證規則:

jQuery.validator.addMethod(
"isbn10rule", 
function(value, element) { 
    var isValid = /^[a-zA-Z0-9]{10}$/.test(value); 
    return this.optional(element) || isValid; 
}, 
"Must be exactly 10 characters and only letters and numbers" 
); 

我不想來測試針對的範圍限制值的答案。我需要在驗證甚至運行之前更新的值。

例如:字符串是 「0940087537」;如果我嘗試將其粘貼到字段中,它會立即顯示「必須完全是10個字符,只能是字母和數字」。但是如果它先剝離了這個空間,那麼它會看到只剩下10個字符。

+0

修剪輸入:'/^[A-ZA-Z0-9] {10} $ /測試(value.trim());' –

+0

@WiktorStribiżew我如何向下表決您?你顯然沒有讀過這個問題。我不只是試圖修剪空白。我知道該怎麼做。我想在它運行正則表達式之前自動更新元素....不只是在修剪後的值上運行正則表達式。 – swg1cor14

+0

然後修剪並更新元素值。這很簡單。 – Bsienn

回答

1

您可以使用JavaScript的trim()方法是這樣的:

function(value, element) { 
    var trimmed_value = value.trim(); 
    var isValid = /^[a-zA-Z0-9]{10}$/.test(trimmed_value); 
    return this.optional(element) || isValid; 
} 

trim()方法從字符串的兩側刪除空格。

注:裝飾()方法不改變原始字符串。

希望這有助於!

+0

意識到Saumya但如你所說....修剪方法不改變原始字符串。我想在驗證甚至運行之前更新原始字符串。 – swg1cor14

-1

第一修剪的值和更新元素。然後測試相同的值。 。在運行一個正則表達式之前

function(value, element) { 
    var trimmed_value = value.trim(); 
    $(element).val(trimmed_value); 
    var isValid = /^[a-zA-Z0-9]{10}$/.test(trimmed_value); 
    return this.optional(element) || isValid; 
} 
+0

您甚至可以在粘貼數據之前訪問數據。使用事件中的剪貼板API。 http://stackoverflow.com/questions/11605415/jquery-bind-to-paste-event-how-to-get-the-content-of-the-paste –

+0

你要downvote我,因爲我根本就沒知道你可以綁定一個粘貼事件?多年來一直這樣做,從來沒有聽說過。我認爲這不值得讚揚。 – swg1cor14

+0

什麼?我沒有倒下你......這麼快判斷? –