我使用下面的代碼進行表單驗證。代碼工作正常。 下面是代碼:jquery表單驗證
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
<script src="js/jquery.validate.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(function(){
jQuery("#type").validate({
expression: "if (VAL != '0') return true; else return false;",
message: "Please make a selection"
});
jQuery("#type2").validate({
expression: "if (VAL != '0') return true; else return false;",
message: "Please make a selection"
});
});
</script>
代碼下拉框中:
<select name="type" id="type">
<option value="0">Select an option</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<select name="type2" id="type2">
<option value="0">Selet an option</option>
<option value="0">Select an option</option>
<option value="'1">Option 1</option>
<option value="'2">Option 2</option>
<option value="'3">Option 3</option>
</select>
現在我想的是在第二個下拉框中的驗證應該工作只有在第一個下拉框中選擇的項目是「選項2「,對於其他選定的選項,第二個組合框不會進行驗證。
jquery.validate.js:
(function (jQuery) {
var ValidationErrors = new Array();
jQuery.fn.validate = function (options) {
options = jQuery.extend({
expression: "return true;",
message: "",
error_class: "ValidationErrors",
error_field_class: "ErrorField",
live: true
}, options);
var SelfID = jQuery(this).attr("id");
var unix_time = new Date();
unix_time = parseInt(unix_time.getTime()/1000);
if (!jQuery(this).parents('form:first').attr("id")) {
jQuery(this).parents('form:first').attr("id", "Form_" + unix_time);
}
var FormID = jQuery(this).parents('form:first').attr("id");
if (!((typeof (ValidationErrors[FormID]) == 'object') && (ValidationErrors[FormID] instanceof Array))) {
ValidationErrors[FormID] = new Array();
}
if (options['live']) {
if (jQuery(this).find('input').length > 0) {
jQuery(this).find('input').bind('blur', function() {
if (validate_field("#" + SelfID, options)) {
if (options.callback_success)
options.callback_success(this);
}
else {
if (options.callback_failure)
options.callback_failure(this);
}
});
jQuery(this).find('input').bind('focus keypress click', function() {
jQuery("#" + SelfID).next('.' + options['error_class']).remove();
jQuery("#" + SelfID).removeClass(options['error_field_class']);
});
}
else {
jQuery(this).bind('blur', function() {
validate_field(this);
});
jQuery(this).bind('focus keypress', function() {
jQuery(this).next('.' + options['error_class']).fadeOut("fast", function() {
jQuery(this).remove();
});
jQuery(this).removeClass(options['error_field_class']);
});
}
}
jQuery(this).parents("form").submit(function() {
if (validate_field('#' + SelfID))
return true;
else
return false;
});
function validate_field(id) {
var self = jQuery(id).attr("id");
var expression = 'function Validate(){' + options['expression'].replace(/VAL/g, 'jQuery(\'#' + self + '\').val()') + '} Validate()';
var validation_state = eval(expression);
if (!validation_state) {
if (jQuery(id).next('.' + options['error_class']).length == 0) {
jQuery(id).after('<span class="' + options['error_class'] + '">' + options['message'] + '</span>');
jQuery(id).addClass(options['error_field_class']);
}
if (ValidationErrors[FormID].join("|").search(id) == -1)
ValidationErrors[FormID].push(id);
return false;
}
else {
for (var i = 0; i < ValidationErrors[FormID].length; i++) {
if (ValidationErrors[FormID][i] == id)
ValidationErrors[FormID].splice(i, 1);
}
return true;
}
}
};
jQuery.fn.validated = function (callback) {
jQuery(this).each(function() {
if (this.tagName == "FORM") {
jQuery(this).submit(function() {
if (ValidationErrors[jQuery(this).attr("id")].length == 0)
callback();
return false;
});
}
});
};
})(jQuery);
任何想法?
感謝名單球員的幫助,我試圖理解,但我是新來的jQuery所以在理解問題。這將是非常有益的,如果你可以解釋我到底能在這裏做什麼來解決我的問題... – sumitmann 2012-03-23 07:05:32