編集:答えた、構文エラーでした、修正されたコードについては以下を参照してください...
こんにちは、長年の読者であり、初めての質問者です。
以下のコードは、条件ステートメントの外側で、関数の最後で戻り値をオーバーライドしたとしても、常にフォームの送信を許可しています。フォームの送信は、関数本体に return false を除いて何もない場合にのみ許可されません。ひどく奇妙です。
関数本体にアラートを入力し、アラートが表示されることを確認することで、フォーム送信時に関数が呼び出されていることを確認しました。コードを個別の関数に取り除き、それをイベントハンドラーとして指定しようとしましたが、違いはありません。
回避策は、おそらくコントロールの状態を監視し、それに応じてフォームの送信ボタンを無効/有効にすることですが、この手法は他の場所でも機能するため、明らかに何かが欠けています。
誰にもアイデアはありますか?私のgoogle-fuは私に失敗しました.SOには、これについて私が見ることができるものは何もありません(まだ)。私は機知に富んでいます。ところで、これのコンテキストは 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;
}
}
});