Редактировать: ответил, была синтаксическая ошибка, см. Ниже для фиксированного кода ...
Привет всем, долгое время читатель, первый раз спрашивающий.всегда разрешает отправку формы, даже учитывая, что я переопределил возвращаемое значение в конце функции, вне каких-либо условных операторов.Отправка формы запрещена, только если в теле функции НИЧЕГО, кроме return false.Очень странно.
Я проверил, что функция вызывается при отправке формы, введя предупреждение в теле функции и проверив, что оно предупреждает меня.Я попытался разделить код в дискретную функцию и указать, что в качестве обработчика событий нет разницы.
Обходной путь, вероятно, состоит в том, чтобы отслеживать состояние моих элементов управления и соответственно отключать / включать кнопку отправки формыно, конечно, я просто упускаю что-то очевидное, так как эта техника работает везде.
У кого-нибудь есть идеи?Мой гугл-фу подвел меня, и ТАК не имеет ничего, что я мог видеть (пока).Я в конце своего остроумия.Контекст для этого, кстати, FF3, jQuery 1.4.2, и я работаю над установкой mantisbt моей компании.HTML-код формы совершенно нормальный.
Приветствия,
G
jQuery(document.forms[2]).submit(function(){
var canSubmit = true;
var msg = '';
// we only do validation if those controls are present and have some options which can be selected
if(jQuery("select[name=priority] option").length() > 0 && jQuery("select[name=severity] option").length() > 0){
//there must be a selection in priority
if(jQuery("select[name=priority]").val() == ''){
canSubmit = false;
msg = msg + 'Please select a priority!\n';
}
//there must be a selection in severity
if(jQuery("select[name=severity]").val() == ''){
canSubmit = false;
msg = msg + 'Please select a severity!\n';
}
//the priority cannot be P1 or P2 and also a feature request
if( jQuery("select[name=priority]").val() > 49
&& jQuery("select[name=severity]").val() == 60){
canSubmit = false;
msg = msg + 'Feature requests cannot be P1 or P2!';
}
//if there is some feedback, alert it to the user
if(msg != ''){
alert(msg);
}
}
//debugging override - always return false!
return false; //instead of canSubmit;
});
Редактировать: вот фиксированный код.Большое спасибо Габи!
var canSubmit = true;
var msg = '';
// validate form submission
jQuery(document.forms[2]).submit(function(e){
msg = '';
canSubmit = true;
// we only do validation if those controls are present and have some
// options
// which can be selected
if(jQuery("select[name=priority] option").length > 0 &&
jQuery("select[name=severity] option").length > 0){
// there must be a selection in priority
if(jQuery("select[name=priority]").val() == 0){
canSubmit = false;
msg = msg + 'Please select a priority!\n';
}
// there must be a selection in severity
if(jQuery("select[name=severity]").val() == 0){
canSubmit = false;
msg = msg + 'Please select a severity!\n';
}
// the priority cannot be P1 or P2 and also a feature request
if( jQuery("select[name=priority]").val() > 49
&& jQuery("select[name=severity]").val() == 60){
canSubmit = false;
msg = msg + 'Feature requests cannot be P1 or P2!';
}
if(!canSubmit){
// if there is some feedback, alert it to the user
if(msg != ''){
alert("There were some problems:\n" + msg);
}
return false;
}
}
});