2012-12-10 59 views
2

我有一個視圖頁面,我在使用knockout.js驗證字段。我想用西班牙語,法語等不同國家的語言驗證我的領域,即使用本地化。 我已經將el-GR.js,fr-FR.js,ru-RU.js等文件添加到我的js文件夾中並引用它們。 現在我如何驗證或檢查到我的modalModal.js頁面?如何在淘汰賽驗證本地化工作

modalModal.js

ko.validation.rules.pattern.message = 'Invalid.'; 
    ko.validation.configure({ 
    registerExtenders : true, 
    messagesOnModified : true, 
    insertMessages : true, 
    parseInputAttributes : true, 
    messageTemplate : null 
    }); 

    var mustEqual = function (val, other) { 
    return val == other(); 
    }; 

    var modalViewModel= { 
    firstName : ko.observable().extend({ 
    minLength : 2, 
    maxLength : 40 
    }), 
    lastName : ko.observable().extend({ 
    minLength : 2, 
    maxLength : 10 
    }), 
    organisation : ko.observable().extend({ 
    minLength : 2, 
    maxLength : 40 
    }), 

    email : ko.observable().extend({ // custom message 
    email: true 
    }), 
    password: ko.observable() 
    }; 

    modalViewModel.confirmPassword = ko.observable().extend({ 
    validation: { validator: mustEqual, message: 'Passwords do not match.', params: 
    modalViewModel.password } 
    }); 
    modalViewModel.errors = ko.validation.group(modalViewModel); 

    // Activates knockout.js 
    ko.applyBindings(modalViewModel,document.getElementById('light')); 

回答

2

我這樣做對我的最新KO項目

我重寫KO驗證規則和使用插件全球化時代,像

ko.validation.rules.number.validator = function (value, validate) { 
    return !String.hasValue(value) || (validate && !isNaN(Globalize.parseFloat(value))); 
}; 

ko.validation.rules.date.validator = function (value, validate) { 
    return !String.hasValue(value) || (validate && Globalize.parseDate(value) != null); 
}; 

編輯:順便說一句,全球化插件有一個錯誤,它會接受點(。)作爲一個數字的一​​部分,即使它不是,我修正了這樣的

Globalize.orgParaseFloat = Globalize.parseFloat; 
Globalize.parseFloat = function (value) { 
    value = String(value); 

    var culture = this.findClosestCulture(); 
    var seperatorFound = false; 
    for (var i in culture.numberFormat) { 
     if (culture.numberFormat[i] == ".") { 
      seperatorFound = true; 
      break; 
     } 
    } 

    if (!seperatorFound) { 
     value = value.replace(".", "NaN"); 
    } 

    return this.orgParaseFloat(value); 
}; 
+0

感謝您的回覆。如果我不想使用插件? –

+0

你說你已經包含了el-GR.js等,這表明你已經在使用全球化? – Anders

+0

el-GR.js文件包含在Knockout Validator插件中,因此不需要使用Globalize插件。但是,當我不使用該插件時,我遇到了問題。 – Chris