Last active
December 22, 2015 00:09
-
-
Save baya/6387182 to your computer and use it in GitHub Desktop.
表单参数验证脚本
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$(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