2012-02-16 2 views
0

オプションのラジオボタンのいずれかが返答されずに送信された場合(フォームが意図的にスキップされたことを確認する) 。 私の問題は、いくつかの条件でif文を設定しているにも関わらず、条件のいずれかが満たされたときに条件が満たされたときにif文がtrueを返すということです。私はjQuery 1.7.1を使用しています。いくつかの条件のうちの1つのみが満たされているにも関わらず、ステートメントがtrueを返す場合

Javascriptを:だから

$("#optmsg").show(); 
function updateFormEnabledOpt() { 
if (verifyOpt()) { 
    $("#optmsg").hide(); 
} else { 
    $("#optmsg").show(); 
} 
} 

function verifyOpt() { 
if ($("#formidable input:radio[name='q11']:checked").val() !== 'undefined' && $("#formidable input:radio[name='q12']:checked").val() !== 'undefined' && $("#formidable input:radio[name='q13']:checked").val() !== 'undefined') { 
    return true; 
} else { 
    return false; 
} 
} 

$('#formidable input:radio[name="q11"]').change(updateFormEnabledOpt); 
$('#formidable input:radio[name="q12"]').change(updateFormEnabledOpt); 
$('#formidable input:radio[name="q13"]').change(updateFormEnabledOpt);​ 

:とすぐに3つの質問のいずれかが隠されます#optmsg確認のラジオボタンを持っているよう。 Jsfiddle(スクリプトと一緒にいくつかのhtmlで):http://jsfiddle.net/rnPA6/

更新:ありがとうございました!猛烈なスピードで私は追加するかもしれない! http://jsfiddle.net/rnPA6/14/

+2

を何**混乱** !!! ** 225 **文字は1行で表示されますか? – gdoron

+0

ハハええ、jsFiddleのTidyUpは改行を削除しました(+とにかくjsLintは検証エラーを出しました)。あなたはなぜその美しい一行を3つに「壊した」のですか? – Hessius

答えて

2

val()メソッドが返すと、何も条件が通過された場合によりこれにundefinedに等しくない場合、入力要素に設定されていない場合は、空の文字列:ここで作業フィドルです。値が空の場合は通過しないでください。値が入力されたラジオボタンjQueryのために設定されていない

if ($("#formidable input:radio[name='q11']:checked").val() 
    && $("#formidable input:radio[name='q12']:checked").val() 
    && $("#formidable input:radio[name='q13']:checked").val()) { 

} 

あなたがそれにval()メソッドを呼び出したとき"on"を返します。したがって、設定されていなければ、各ラジオボタンに空の値を少なくとも1つ設定する必要があります。

+0

**:)** – gdoron

+0

私は混乱が好きではありません! :) – ShankarSangoli

+0

これは美しく働いた! (たとえjslintが不正な改行を報告したとしても) – Hessius

0

あなたと(& &)を比較しています。 this jsfiddleでは、あなたのコードを使用するように修正しましたか(||)。

0

'undefined'のテキストを含む文字列と比較しています。値はundefinedではありません。

0

これが行います。

function updateFormEnabledOpt() { 
    $("#optmsg").show(); 
    if (($("#formidable input:radio[name='q11']:checked").val() !== undefined) && ($("#formidable input:radio[name='q12']:checked").val() !== undefined) && ($("#formidable input:radio[name='q13']:checked").val() !== undefined)) { 
     $("#optmsg").hide(); 
    } 
} 

$('#formidable input:radio[name="q11"]').change(updateFormEnabledOpt); 
$('#formidable input:radio[name="q12"]').change(updateFormEnabledOpt); 
$('#formidable input:radio[name="q13"]').change(updateFormEnabledOpt); 

が行動でそれを参照してください。http://jsfiddle.net/BwUWp/

+0

これは完全に機能しました!助けてくれてありがとう、すでにShankarSangoliのソリューションを実装しましたが、これは私のコードがうまくいかなかった理由を理解する助けになりました! – Hessius

関連する問題