2016-06-29 24 views
0

我想驗證兩個字段的名稱爲價格數量在我提交表單之前正在接收帶有一個數字類型的輸入值,所以在我的驗證函數中,我寫入下面的代碼:使用Redux-Form時,我不明白爲什麼我的輸入值總是以字符串形式返回。我希望兩個字段只能是數字

function validate(values) { 
    const errors = {}; 

    _.map(FIELDS, (config, field) => { 
     if (!values[field]) { 
      errors[field] = `Please Enter ${config.label}`; 
     } 
     if (typeof values['price'] !== 'number') { 
      errors['price'] = 'Please enter a number'; 
     } 
     if (typeof values['quantity'] !== 'number') { 
      errors['quantity'] = 'Please enter a number'; 
     } 
    }); 

    return errors; 
} 

錯誤「請輸入號碼」是我的表單上顯示,無論我是否輸入一個數字或沒有,所以我的控制檯登錄的價格和數量將typeof輸入值和原來他們總是字符串。我應該如何驗證表格,以便檢查價格和數量是否收到一個數字?

回答

1

數據總是會以字符串的形式從輸入字段中找到。相反,你可以使用正則表達式地看到,它只是容器數而不是做

typeof values['quantity'] !== 'number'

你應該嘗試這樣的事情

const reg = /^\d+$/;

這隻會爲你匹配的數字。匹配這個正則表達式並確定你是否有數字。

如果你想這個正則表達式匹配的簽名和浮點數沒有空字符串,使用方法:

/^-?\d+\.?\d*$/

這裏是你將如何使用它:

const numberRegex = /^-?\d+\.?\d*$/; 

if (!/^\d*$/.test(value)) { 
    errors['price'] = 'Please enter a number'; 
} 
... 
+0

如何使用正則表達式來確保輸入只有數字?我明白你爲什麼要使用它的意思,但我真的不知道如何使用它。 – Mjuice

+0

@Mjuice我已經用示例用法更新了我的答案。 –

相關問題