2012-03-07 5 views
0

これは私に本当にバナナをもたらしました。それはとてもシンプルで簡単ですが、何が間違っているのか分かりません。チェックボックスグループの値を取得

私のコントローラにチェックボックスの値を入力したい(テスト目的のために)。

私のフォームです。

<a href='#' name='submitForm'>submit the form</a> 
//I have jquery attached to this tag and will submit the form when user clicks it 

echo form_open('test/show'); 

echo form_checkbox('checkbox[]','value1'); 
echo form_checkbox('checkbox[]','value2'); 
echo form_checkbox('checkbox[]','value3'); 
echo form_checkbox('checkbox[]','value4'); 

echo "<input type='text' name='text1' value='ddd'>"; 

echo form_close(); 


//My controller test 

public function show(){ 

$data1=$this->input->post('text1'); 
//I can get text1 value from input box 

$data2=$this->input->post('checkbox'); 
//it keeps giving me undefined index 'checkbox' 

$data3=$_POST['checkbox']; 
//same error message 
//WTH is going on here!!!!! 

} 

助けてください。このことが私にナッツを誘う!ありがとう。

更新日: ありがとうございました。正確には、私の送信ボタンは<a>タグで、formタグの外側にあります。私のformタグの中に<a>タグを入れて、それらを動作させる必要があるようです。本当?あなたが実際にボックスをチェックして送信すると、彼らは成功したと考えられていないとして、それがオフになっている場合

+2

'$ this-> input-> post( 'anything')'は決して「未定義インデックス」を与えません。常にFALSEまたは値を返します。あなたの質問について、正しいものではないものがあります。 –

+0

@Madmartigan私はcodeigniterエラーレポートからエラーを受け取りましたが、その理由はわかりません。また、私の更新されたメモをご覧ください。ありがとう。 +1 – FlyingCat

答えて

2

チェックボックスが任意のデータを提出しません(as per the w3c specification here

は、それがうまくいく - それがない実際には、私は」ちょうどそれをテストしました。

isset()機能で$_POSTへの呼び出しをラップする必要があります。

if(isset($_POST['checkbox'])) {} 

$this->input->post('checkbox')を呼び出すと、あなたにこの事態を持つメソッドのお得な情報など、未定義のインデックスエラーを与えるべきではありません。 Input::post()メソッドは、falseまたはチェックボックスの値を返します。

編集 -

あなたの質問にあなたの改正を受けて、あなたは、などこのJavaScriptを使用せずにフォームデータを提出するために提出するように設定type属性を持つタイプinputの要素を使用する必要があります。ボタンは、提出しようとしている<form></form>の中にある必要があります。

<input type="submit" value="Submit"> 

type="submit"は、送信イベントが発生するとブラウザにデータを送信させます。これを行うためにフォームの内部または外部の別の要素を使用する場合は、Javascriptを使用する必要があります。ただし、これはブラウザ/ユーザーごとに無効にすることができ、結果として信頼できません。

// Standard Javascript 
<form name="myform"... 
<a onclick="javascript:document.myform.submit();" href="javascript:void(0)">Submit</a> 

// jQuery 
$('#my-a-tag-submit-button').live('click', function() { 
    $('#my-form').submit(); 
} 
+0

助けてくれてありがとう。私の更新されたメモをご覧ください。 +1 – FlyingCat

+0

私は私の答えを修正しました。 –

関連する問題