Skip to content

Instantly share code, notes, and snippets.

@baya
Last active December 22, 2015 00:09
Show Gist options
  • Save baya/6387182 to your computer and use it in GitHub Desktop.
Save baya/6387182 to your computer and use it in GitHub Desktop.
表单参数验证脚本
$(document).ready(function(){
var Validator = {
submit_fields: [],
errors: [],
nameTitleMapper: {
'contest[title]': '比赛标题',
'contest[description]': '比赛描述',
'contest[category_names][]': '比赛类别',
'contest[start_day]': '比赛开始时间',
'contest[end_day]': '比赛结束时间'
},
errorMessage: {
presence: '不能为空',
endDayAfterStartDay: '结束时间应该晚于开始时间'
},
presence_fields: ['contest[title]', 'contest[category_names][]', 'contest[description]', 'contest[start_day]', 'contest[end_day]'],
findFieldByName: function(name){
var fields = this.submit_fields;
for(var i=0; i < fields.length; i++){
if(fields[i].name == name){
return fields[i]
}
}
},
nameToTitle: function(name){
return this.nameTitleMapper[name];
},
validatePresence: function(){
this.errors = [];
var fields = this.presence_fields;
for(var i=0; i< fields.length; i++){
var field_name = fields[i];
var field = this.findFieldByName(field_name);
var error_msg = this.nameToTitle(field_name) + this.errorMessage['presence'];
if(!field || !field.value){
var error = {field: field_name, message: error_msg};
this.errors.unshift(error);
alert(error.message);
}
}
},
validateEndDayAfterStartDay: function(){
this.errors = [];
var start_day_field = this.findFieldByName('contest[start_day]');
var end_day_field = this.findFieldByName('contest[end_day]');
var start_date = this.getDate(start_day_field.value);
var end_date = this.getDate(end_day_field.value);
if(start_date > end_date){
var error = {field: 'contest[end_day]', message: this.errorMessage['endDayAfterStartDay']};
this.errors.unshift(error);
alert(error.message);
}
},
// getDate('2013-12-03')
getDate: function(str){
var tokens = str.split('-');
var year = tokens[0];
var month = tokens[1];
var day = tokens[2];
var date = new Date(year, month, day);
return date;
}
}
$("form.validate").on("submit", function(event){
event.preventDefault();
Validator.submit_fields = $(this).serializeArray();
Validator.validatePresence();
if(Validator.errors.length > 0 ){
return;
}
Validator.validateEndDayAfterStartDay();
if(Validator.errors.length == 0){
$(this.submit());
}
})
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment