2011-02-03 25 views
2

基本的なことについて話してください...今朝よりカフェインが必要な場合や、何かが必要な場合b/c私はこれをうまく動作させることができません。Cfinputチェックボックスのチェック

私のフォームには、1つのチェックボックスを含む複数の入力があります。私のCfqueryでは、チェックボックスがチェックされているかどうかを調べるためにテストする簡単なSQLを書くだけです。しかし、私のコードは完全にそれを無視しています。ここで

は基本だ:

<cfform name="form" action="...." format="HTML"> 
    .... 
    <cfinput type="checkbox" name="search_NR" id="search_NR" checked="no" /> 
    <cfinput type="submit" name="submit" value="Search" /> 
</cfform> 

私のcfqueryので、私はちょうどここにあるチェックボックスに関連する部分を出してあげるかなり広範囲です:

<cfif isDefined("form.search_NR")> 
     AND (tblMain.NR = true) 
    </cfif> 

私の考えは箱がないだろうということでしたチェックされていない場合は定義してください。しかし、フォームのボックスにチェックを入れるかどうかにかかわらず、クエリはこれをすべて無視します。

このチェックボックスをオンにすると、sqlの残りの部分に "tblMain.NR = TRUE"を追加するだけです。

+0

あなたはFORMスコープを変更する何かを持っていますか?チェックボックスに値属性を指定しないと、 "on"という値がサーバーに返されます(少なくともCF8のインストールではそれが行われます)。また、ページがリダイレクトされ、FORMスコープをクリアする可能性があるものは何ですか? –

+0

わかりません。私はこれを可能な限りシンプルに保つように努めました。私はチェックボックスの値を設定していないと思うが、もしあれば何を使うのか分からなかった。フォームには他にもたくさんのものがあります。私は本当にこの1つのボックスに集中したいと思っています。それはチェックされていますか?もしそうなら、このコードをSQL文に追加してください... – stuttsdc

+1

よく動作することを確認するためには、非常に簡単なテストを行い、それを壊しているフォームのスコープを操作するために何をしているのか把握してください:http://pastebin.com/qZ6iP5rC –

答えて

0

method="POST"を使用してみてください:

<cfform name="form" action="...." format="HTML" method="post"> 

そうでなければ、あなたの変数はURLスコープを経由して送信されます。

+0

どのような違いがありますか。今では、このページにはかなりの数の入力(テキストボックス、リストボックス、オプションボタンなど)があり、フォームはcfqueryを呼び出して、これらの入力のそれぞれを調べて、それらが選択されているかどうかを調べたり、そして、それはすべてうまく動作します。私はちょうどチェックボックスを追加するための構文に焦点を当てようとしています。 – stuttsdc

+1

実際、メソッドのデフォルトは、livedocsによると "post"です。 http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_f_13.html –

-2

私は形式では...

を自分で解決策を考え出した:

<input type="checkbox" name="search_NR" <cfif search_NR is "on"> checked</cfif> /> 

と処理ページで...

をcfqueryの前に:

<cfparam name="search_NR" default="off"> 

クエリ内で...

<cfif #search_NR# EQ "on" > 
      AND (tblMain.NR = true) 
     </cfif> 
+0

前にcfparamの値を持っていましたか?私はあなたがチェックされたときにフォームフィールドを取得していなかった理由が不思議です:) –

+0

私はそれが問題だったとは思わない...もしそれがチェックされているボックスを持っているとエラーをスローし、 。率直に言って、今働いている限り、私はほとんど気にしません。しかし、助けてくれてありがとう。 – stuttsdc

+0

これは、IsDefinedを使用した元のコードとは異なります。メソッドはpostと仮定して、元のものはそのままの状態で動作するはずです。つまり、変数をスコープして無関係の#記号を取り除く必要があります。 (個人的には、私も明示的にチェックボックスの値を設定します) – Leigh

0
<cfif StructKeyExists(form, "search_NR")> 
    AND (tblMain.NR = true) 
</cfif> 
0

<cfForm><cfInput type="Checkbox">の両方を使用した場合、これは正しく現在のステータスを表示し、ユーザーが変更することができます:

注:<cfParam>タグはフォーム要素に他の参照の前にあることを確認してください。

<cfparam name="form.search_NR" default="off"> 

<cfInput name="search_NR" type="Checkbox" checked="#form.search_NR is 'on'#">Some Text Here 

<cfform>が送信されるとsearch_NRの値は、「on」または「off」のいずれかであり、あなたのクエリで確認することができます。要素名にform.を追加することを忘れないでください:

<cfIf form.searchNR EQ 'on'> 
... 
<cfElse> 
... 
</cfIf> 
関連する問題