2012-01-09 12 views
0

私は彼の詳細を記入し、さまざまなコントロールからいくつかのオプションを選択する医療健康計画のPHPアプリケーションフォームを持っています。家族計画)。時々、ユーザーは兄弟/夫人の詳細を記入しますが、「家族」オプションも選択することを忘れて、それを「プライベート」プランのデフォルト値にしておきます。JS&PHP - 他のフィールドが入力されている場合にドロップダウン値を変更します

ユーザーが兄弟の詳細を入力すると、[プラン]ドロップダウンが適切なオプションに変更されることを確認するにはどうすればよいですか?私はこれがjsで簡単にできることは知っていますが、onFocusonClickは、ユーザが単にSibling Nameフィールドをクリックして値を入力せずに何かを記入するだけなので、機能しません。後でそれをクリアするなど

私は利用可能な4つの兄弟フィールドの長さを数え、それらのうちの1つが空でない場合、 'plan'選択値を 'private'から 'family' '

素晴らしいアイデアだと思います。

+0

なぜ、ユーザーが家族計画を選択したときに兄弟フィールドが表示されないのですか? –

+0

そうすることができますが、家族計画が利用可能であることをユーザーに明確にしない恐れがあります。 – bikey77

+0

ドロップダウンの代わりにラジオボタンを使用してプランタイプを選択することに重点を置くことができます。 Webフォームの[相互排他的入力グループ](http://www.lukew.com/ff/entry.asp?974) –

答えて

0

あなたは、部分的に自分で答えを引けるました:あなたは、フィールドが空の(または他のいくつかのランダムな状態)でないかどうかをチェックする機能が必要になります。その関数を呼び出すことができます。

次に、必要に応じてこれらの2つの関数を組み合わせることもできますが、それらを分離するとコードは通常より洗練されています。例えば。 ensureValidFieldPlan()

次に、その関数を適切な時間に実行するようにフックすることができます。これを行う最も簡単な方法はonChangeのフォームにあります。より適切な方法は、適切なフォームフィールドにフックすることですが、簡単にするためにフォームにフックすることができます。

 
function checkCondition(){ 
    return form.field1.value.length != 0; 
} 

function ensureValidFieldPlan(){ 
    if(form.plan.value != 'family' && checkCondition()){ 
     form.plan.value = 'family' 
    } 
} 

form.onchange = function(){ form.onChange(); ensureValidFieldPlan(); }; 

注これは、ブラウザクライアントが有効な形式(例えば、それがスプーフィングすることができます)を転送することを保証するものではないことを、あなたは常にもサーバ - を実行する必要があります。

あなたの合計のコードは次のようになりますサイドバリデーション。

+0

ありがとう、私はonchange関数を使用し、正常に動作します。 – bikey77

0

あなたはそれをどのように扱いたいかによって、サーバー側?実際には、

strlen($_POST['siblingname']) > 0 

を検出してから、別の処理を行う前にphpコードから自動的にfamillyにプランを設定してください。

クライアント側で実行したい場合。一般的なJQueryライブラリを使用し、sibblingnameフィールドの値変更イベントをインターセプトすることをお勧めします。次に、イベントハンドラで、シブリング名フィールドの値の長さを確認します。何かがある場合は、プランをファミリに設定します。

幸運

+0

クライアント側の検証が必要なので、ユーザーに彼はさまざまなオプションを理解しています。最も重要なことは、家族計画の高い費用を彼に知らせることと、フォームを提出する前に異なるTOS契約を受け入れることを確実にすることです。 – bikey77

関連する問題