ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

複数のsubmitボタンを押すと、それぞれの値をpostできるようにしてみた。

スポンサードリンク

http://www.flickr.com/photos/27403767@N00/2218075860
photo by Scott Beale


あー、めんどくさかったよー(;´Д`)


タイトル通りです。


普通、submitはひとつのフォームに対し、1つ配置される図が多いと思います。


今回、CakePHPでFormの中にボタンだけを入れたい。んで、それぞれをクリックするとPOSTでデータを飛ばす。という処理を実装しました。


面倒臭かったので(知らなかったから)、φ(..)メモメモ



<?=$this->Form->create('Controller', array(
	'controller' => 'controller',
	'action' => 'backup',
	'div' => false,
	'name' => 'formPost'
)));?>

<?php foreach($list as $key => $value) :?>
	<div class="submit_button"><?php
	echo $this->Form->submit('', array(
		'class' => 'backup_submit',
		'div' => false,
		'onClick' => 'return set_value(' .$value['id'] . ')') // ここがミソ
	);?></div>
<?php endforeach; ?>
<input type="hidden" name="test_id"> <!-- ここも味噌 -->
<?=$this->Form->end();?>


上記のように記述すると、submitをクリックするとonClickイベントになる。


で。


それが実行されるJavaScriptがこれ。

<script language="JavaScript">
function set_value(s_val){
    if(window.confirm('サブミットするよ?いいのかな?')){
        document.formPost.test_id.value = s_val;
        return true;
    } else {
        return false;
    }
}
</script>

onclickの引数が渡したいデータ。(value的な?)これをformの閉じタグ上にあるhiddenのinputに渡せばおk.


あとは、submitがクリックされるので、Postで送信されるというわけ。


また、この関数はsubmitを押したあとにキャンセルできるようになっています。


さて、疲れた。。。。orz