スレッド表示 | フラット表示〕 全トピック 920 件中 1 番目 次≫ ≪無し

コンボボックスについて

created: 2007-01-04 14:49 | modified: 2016-04-01 01:56 | reply: 24

[3519] コンボボックスについて

user: matu | created: 2007-01-04 14:49
こんにちわ
いつも色々と勉強させて頂いています。
コンボボックスについて質問があります。
SQL文(Postgresql)で処理したデータをJavaScriptの関数の中に入れSQL文で処理したいのですがうまく行きません。SQL文で処理したデータをコンボボックス2に表示させたいと思っています。

プログラムは下記の処理でしています。

<script language=Javascript>
<!--
function sample(value,sentaku)
{
<?php
if($value){
$re = pg_query($con,"select * from test2 where combv2 = '$value'")
");
while($row = pg_fetch_array($re)){
print"{$row['combv2']}";
}
}
?>
var none = new Array("---select---");
var this_array = new Array();
this_array = eval(value);
//valueにコンボボックス1で選択したデータが入っているのは確認出来ました。
var len = this_array.length;
sentaku.options.length = len;
for(i=0; i<len; i++)
{
sentaku.options[i].value = this_array[i];
sentaku.options[i].text = this_array[i];
}
sentaku.options[0].selected=true;
}
// -->
</script>

<form name = form1 method = post>
データ1//コンボボックス1
<select onchange = "sample(value,select2)" name = select1>
<option value = none selected>---select---</option>
<?php
$re = pg_query($con,"select * from test");
while($row = pg_fetch_array($re)){
print"<option value = '{$row['combv']}'>{$row['combt']}</option>";
?>
</select><br>
データ2//コンボボックス2
<select name = select2>
<option value = "" selected>---select---</option>
</select>
</form>

何度も試してみましたがうまくいきません。
アドバイスを頂けないでしょうか?
よろしくお願いします。
reply: 3520 返信 編集 削除

[3520] Javascript と PHP の連携

user: ゆうじ | created: 2007-01-04 18:20
こんばんわ。

コンボボックス1で変更があったときに sample関数の中の
PHPコードを実行させようとしてるように読めるのですが、
このコードがサーバからブラウザに送信された時点で
すでにPHPコードは実行を終えてますので、
このようなJavascriptとPHPの直接の連携はできません。

PHPはサーバで実行され、HTMLやJavascriptをはじめとする
サーバの出力を整形・加工するツール。
Javascriptはクライアント(ブラウザ)側で実行され、
サーバから得たページを動的に変えるツール。
ってところを整理してみてください。

やるならば、
(1)あらかじめselect2のoption値を全て獲得して
Javascriptの2次元配列としてsample関数に準備しておき、
sample関数が呼ばれた時点で
valueをキーにselect2のoption値を初期化する。

もしくは、
(2)valueに対応するselect2のoption値を
JSONやXMLで出力するPHPスクリプトを別途用意しておき、
sample関数が呼ばれた時点で Ajaxでこれにアクセス&値を獲得して、
select2のoption値を初期化する。

てなところでしょうか。
Parent: 3519  reply: 3521 3523 返信 編集 削除

[3521] Re.Javascript と PHP の連携

user: matu | created: 2007-01-05 00:15
こんばんわ。
遅くなってすいません。
ゆうじさん返事ありがとうございます。
教えてもらった(1)の方法でやりたいと思います。
そこで質問なんですが

> (1)あらかじめselect2のoption値を全て獲得して
> Javascriptの2次元配列としてsample関数に準備しておき、
> sample関数が呼ばれた時点で
> valueをキーにselect2のoption値を初期化する。

select2のデータのSQL文はsample関数の外で処理をおこない、処理したデータをsample関数に入れてやればいいですか?

また、PHPの変数をJavaScriptの変数に渡す方法があれば、ご教授ください。
自分でも,もう少し調べてみます。
よろしくお願いします。
Parent: 3520  reply: 3522 返信 編集 削除

[3522] Re.Javascript と PHP の連携

user: ゆうじ | created: 2007-01-05 01:20
> select2のデータのSQL文はsample関数の外で処理をおこない、処理したデータをsample関数に入れてやればいいですか?

sample関数の中でも前でもどちらでもOKです。
PHPの実行結果として、配列を初期化するJavascriptが出来ていれば良いわけで、
初期化されたJavascriptの配列が、
関数内だけで有効なローカル変数なのか、
関数外でも有効なグローバル変数なのかの違いです。


> また、PHPの変数をJavaScriptの変数に渡す方法があれば、ご教授ください。

PHPからJavaScriptへ値を渡すというよりも、
コンボボックス1のところで、HTMLを書き出してるのと同じように、
PHPでJavascriptを整形すると考えるといいかもしれません。
PHPからすると、HTMLもJavascriptも単なる文字データであり、
PHPが実行され、サーバからブラウザに出力されるのが
HTMLだったりJavascriptだったりするわけです。


とりあえずPHP抜きで、
select2のoptionとなる2次元配列をJavascriptだけで書いてみて、
それをPHPで書き出すコードに直してみるのはいかがですか。
Parent: 3521  reply: 3524 3619 返信 編集 削除

[3524] Re.Re.Javascript と PHP の連携

user: matu | created: 2007-01-05 01:31
ゆうじさん返事ありがとうございます。
試してみたいと思います。
結果が出たら返事をしたいと思います。
ありがとうございます。
Parent: 3522  返信 編集 削除

[3619] Javascript と PHP の連携

user: matu | created: 2007-02-22 18:45
こんばんは
いつも色々と勉強させて頂いています。
返事遅くなってすいません。
本当にすいません。

> とりあえずPHP抜きで、
> select2のoptionとなる2次元配列をJavascriptだけで書いてみて、

select2のoptionを2次元配列ではありませんが、1次元配列で作ってみたところ動きました。
しかし、動いたのですが、1次元配列より2次元配列の方がいいのでしょうか?

以下がsample関数のプログラムです。

<script language=Javascript>
<!--
function sample(value,sentaku)
{
var test = new Array();
test[0] = "データ1";
test[1] = "データ2";
var none = new Array("---select---");
var this_array = new Array();
this_array = eval(value);
var len = this_array.length;
sentaku.options.length = len;
for(i=0; i<len; i++)
{
sentaku.options[i].value = this_array[i];
sentaku.options[i].text = this_array[i];
}
sentaku.options[0].selected=true;
}
// -->
</script>


2次元配列で試してみましたがうまくいきませんでした。
sample関数の中の、1次元配列を2次元に変更してやってみたところ、リストボックスの表示の部分がうまく動きませんでした。
配列のデータを3つ準備しているのですが、一つのリストに3つ表示されます。

何度も試してみましたがうまくいきません。
アドバイスを頂けないでしょうか?
よろしくお願いします。
Parent: 3522  reply: 3622 返信 編集 削除

[3622] コンボボックスの連動

user: ゆうじ | created: 2007-02-23 00:20
2次元配列でなくてもかまいませんが
2次元配列にした方がスマートに書ける気がします。

挙げて頂いたコードは動きませんし
2次元配列をどのように処理したのかわかりませんので
なんともアドバイスしようがありませんせんが、
2つのコンボボックスを連動させるのに
私がイメージしてるのは以下のようなコードです。

<script type="text/javascript">
<!--
// コンボボックス2のオプションリストの初期化
var optlist = new Array();
optlist['none'] = new Array('--- select ---');
optlist['val1'] = new Array('選択1-1','選択1-2','選択1-3','選択1-4','選択1-5');
optlist['val2'] = new Array('選択2-1','選択2-2','選択2-3','選択2-4');
optlist['val3'] = new Array('選択3-1','選択3-2','選択3-3');

function setSelect2Options(val)
{
var selecter = document.form1.select2;
var list = optlist[val];

selecter.options.length = list.length;
for(i=0; i<list.length; i++){
selecter.options[i].value = list[i];
selecter.options[i].text = list[i];
}
selecter.options[0].selected=true;
}
//-->
</script>
<form name="form1" method="post">
コンボボックス1
<select onchange="setSelect2Options(value)" name="select1">
<option value="none" selected="selected">--- select ---</option>
<!-- Start of select1 options -->
<option value="val1">val1</option>
<option value="val2">val2</option>
<option value="val3">val3</option>
<!-- End of select1 options -->
</select>
<br>
コンボボックス2
<select name="select2">
<option value="none" selected="selected">--- select ---</option>
</select>
</form>


DBから得た値を反映させるには、このコードの
// コンボボックス2のオプションリストの初期化 のところと、
<!-- Start of select1 options --> から
<!-- End of select1 options --> までを
DBから得た値を元にPHPで整形すれば出来上がり、
こんなイメージを描いてます。


追記:こっちの方がJavascriptの汎用性が高くなっていいかも。
<script type="text/javascript">
<!--
// コンボボックス2のオプションリストの初期化
var optlist = new Array();
optlist['none'] = new Array('--- select ---');
optlist['val1'] = new Array('選択1-1','選択1-2','選択1-3','選択1-4','選択1-5');
optlist['val2'] = new Array('選択2-1','選択2-2','選択2-3','選択2-4');
optlist['val3'] = new Array('選択3-1','選択3-2','選択3-3');

// コンボボックスselecter のオプションをlistで初期化する関数
function setSelectOption ( selecter, list )
{
selecter.options.length = list.length;
for(i=0; i<list.length; i++){
selecter.options[i].value = list[i];
selecter.options[i].text = list[i];
}
selecter.options[0].selected = true;
}
//-->
</script>
<form name="form1" method="post">
コンボボックス1
<select onchange="setSelectOption(select2, optlist[value])" name="select1">
<option value="none" selected="selected">--- select ---</option>
<!-- Start of select1 options -->
<option value="val1">val1</option>
<option value="val2">val2</option>
<option value="val3">val3</option>
<!-- End of select1 options -->
</select>
<br>
コンボボックス2
<select name="select2">
<option value="none" selected="selected">--- select ---</option>
</select>
</form>
Parent: 3619  reply: 3627 4024 4422 返信 編集 削除

[3627] Re.コンボボックスの連動

user: matu | created: 2007-02-24 02:06
こんばんは。
ゆうじさん返事ありがとうございます。
遅くなてすいません。

>2次元配列にした方がスマートに書ける気がします。
確かに2次元配列の方がスマートでした。
ありがとうございます。

また、参考・追記プログラムありがとうございます。
参考にしたいと思います。
頑張ります。
また連絡します。
Parent: 3622  reply: 3629 返信 編集 削除

[3629] Re.Re.コンボボックスの連動

user: matu | created: 2007-03-03 22:23
こんばんは。
返事遅くなってすいません。
いつも勉強させて頂いています。

> <!-- Start of select1 options --> から
> <!-- End of select1 options --> までを
DB(PostgreSQL)得た値をPHPで出来ました。

> // コンボボックス2のオプションリストの初期化 のとこ> ろと、

 しかし、コンボボックス2のオプションリストの初期化のところがうまくいきません。

自分なりに、以下のプログラムを考えてみました。
この方法だとうまいいきません。

<!--
// コンボボックス2のオプションリストの初期化
var optlist = new Array();
<?php
$result = "select * from val ";
while($row = pg_fetch_array($result)){
$combt = $row['combt'];
$combv = $row['combv'];
print"optlist['$combv'] = new Array('$combt')";
}
?>
//-->
</script>

以上のプログラムを実行すると
optlist['val1'] = new Array('選択1-1');
optlist['val1'] = new Array('選択1-2');
optlist['val1'] = new Array('選択1-3');
         :
         :
optlist['val3'] = new Array('選択3-1');
optlist['val3'] = new Array('選択3-2');
optlist['val3'] = new Array('選択3-3');

 この配列だと全てのデータをコンボボックス2に表示することが出来ません。

 ゆうじさんが参考プログラムで書いていた2次元配列をPHPで表示するにはどうすればいいですか?

何度も試してみましたがうまくいきません。
アドバイスを頂けないでしょうか?
よろしくお願いします。
Parent: 3627  reply: 3630 返信 編集 削除

[3630] Re.Re.コンボボックスの連動

user: ゆうじ | created: 2007-03-04 00:13
コンボボックス2の値獲得と
オプションリストの整形を分けて考えると
わかりやすくなるかも。

ポイントは、値獲得した時に
combv をキーとした2次元配列にしておくこと。
あらかじめこうしとけば整形の際考えやすくなります。
混乱するようなら、わかるところまで処理を細分化してみましょう。

<script type="text/javascript">
<!--
var optlist = new Array();
optlist['none'] = new Array('--- select ---');
<?php
//
// コンボボックス2の値獲得(この時点で2次元配列に)
//
$result = pg_query($con, "select * from conv2");
$conv2 = array();
while ($row = pg_fetch_array($result)) {
$conv2[$row['combv']][] = $row['combt'];
}

//
// オプションリストの整形&出力
//
foreach ($conv2 as $key => $val) {
echo "optlist['", $key, "'] = new Array('";
echo implode("','", $val);
echo "');\n";
}
?>

function setSelectOption ( selecter, list )
{
selecter.options.length = list.length;
...
...
...
Parent: 3629  reply: 3631 返信 編集 削除

[3631] コンボボックスの連動

user: matu | created: 2007-03-04 02:58
ゆうじさん返事ありがとうございます。

> コンボボックス2の値獲得と
> オプションリストの整形を分けて考えると
> わかりやすくなるかも。

とても分かりやすいです。
解決する事が出来ました。
自分なりにプログラムを考えたいと思います。
これからも頑張ります。
ありがとうございました。
Parent: 3630  返信 編集 削除

[4024] コンボボックスの連動

user: けん | created: 2007-11-15 13:49
javascript初心者です。

過去ログから
ゆうじさんとmatuさんのやり取りを見て
自分のやりたいプログラムを作ってみました。


無事DBからデータを抽出できてるんですが、
コンボボックス1をセレクトしても
コンボボックス2へ連動ができません。

なにが間違ってるのか教えて頂けると幸いです。

よろしくお願いします。


<script type="text/javascript">
<!--
// コンボボックス2のオプションリストの初期化

var optlist = new Array();
optlist['none'] = new Array('--- select ---');
<?php


$query = "select id, day from $tablename ;";
$rtn = pg_Exec( $con, $query );
$array = array();
while ($row = pg_fetch_array($rtn)) {
$array[$row['id']] []= $row['day'];
}
foreach ($array as $key => $val) {
echo "optlist['", $key, "'] = new Array('";
echo implode("','", $val);
echo "');\n";
}
?>

// コンボボックスselecter のオプションをlistで初期化する関数

function setSelectOption ( selecter, list ){
selecter.options.length = list.length;
for(i=0; i<list.length; i++){
selecter.options[i].value = list[i];
selecter.options[i].text = list[i];
}
selecter.options[0].selected = true;
}
//-->
</script>
<form name="form1" method="post">
コンボボックス1
<select onchange="setSelectOption(select2, optlist[value])" name="select1">
<option value="none" selected="selected">
--- select ---
</option>
<!-- Start of select1 options -->
<?php
foreach ($array as $key => $val) {
echo "<option value=\" $key \">$key</option>\n";
}

?>

<!-- End of select1 options -->

</select>
<br>
コンボボックス2

<select name="select2">
<option value="none" selected="selected">
--- select ---
</option>
</select>
</form>
Parent: 3622  reply: 4025 返信 編集 削除

[4025] Re.コンボボックスの連動

user: ゆうじ | created: 2007-11-15 15:41
こんにちは。

Javascriptに問題がありそうですが、
先ずは、ページの「ソース」をみて
想定した通りコードになっているか確かめてください。

それとJavascriptでエラーは出てませんか?
エラーが出ていれば、IEなら
左下の「ページが表示されました」の前のアイコンが
三角のびっくりマークになってますので
ダブルクリックすれば、エラーの内容を確認できます。
Parent: 4024  reply: 4026 返信 編集 削除

[4026] Re.Re.コンボボックスの連動

user: けん | created: 2007-11-15 15:54
早速のお返事ありがとうございます!!

ソースを見ました。

以下の感じです。




<script type="text/javascript">
<!--

var optlist = new Array();
optlist['none'] = new Array('--- select ---');
optlist['200813'] = new Array('2008-03-04');
optlist['200814'] = new Array('2008-03-04');
optlist['200812'] = new Array('2008-03-12');


function setSelectOption ( selecter, list ){
selecter.options.length = list.length;
for(i=0; i<list.length; i++){
selecter.options[i].value = list[i];
selecter.options[i].text = list[i];
}
selecter.options[0].selected = true;
}
//-->
</script>
<form name="form1" method="post">
コンボボックス1
<select onchange="setSelectOption(select2, optlist[value])" name="select1">
<option value="none" selected="selected">
--- select ---
</option>
<!-- Start of select1 options -->
<option value=" 200813 ">200813</option>
<option value=" 200814 ">200814</option>
<option value=" 200812 ">200812</option>

<!-- End of select1 options -->

</select>
<br>
コンボボックス2

<select name="select2">
<option value="none" selected="selected">
--- select ---
</option>
</select>
</form>




で、エラー表示されてました!!
なんでわかったんですか?すごすぎる。。。


ライン:24
文字:3
エラー:'length'はNullまたはオブジェクトではありません
コード:0

ってなってました。
どういったことでしょう?
Parent: 4025  reply: 4029 返信 編集 削除

[4029] Re.コンボボックスの連動

user: ゆうじ | created: 2007-11-15 16:21
24行目の'length'が変ってことですね。
見る限りこのコードそのものは何も問題ありませんね。
selecter.options.length = list.length;

この関数を呼んだ側の、引数が問題では無いかと思います。

<select onchange="setSelectOption(select2, optlist[value])" name="select1">
<option value="none" selected="selected">
--- select ---
</option>
<!-- Start of select1 options -->
<option value=" 200813 ">200813</option>
<option value=" 200814 ">200814</option>
<option value=" 200812 ">200812</option>

value=" 200813 "

どうみてもこの数字の両端のスペースは不要ですね。
Parent: 4026  reply: 4030 返信 編集 削除

[4030] Re.Re.コンボボックスの連動

user: けん | created: 2007-11-15 17:01
解決しました!!
まさか、見やすくしたつもりで空けたスペースがあだになるとわ。。。


最後の目的なんですが、
コンボボックス1でセレクトしたことにより
コンボボックス2が連動し、
さらに
コンボボックス2のセレクトにより
コンボボックス3が連動するって感じです。

で、以下の感じで作ってみたんですが、
上手くできません。

この手法は間違いなんでしょうか?

ちなみにページのエラー表示もなく、
ソースにもデータがちゃんと入ってるように見えてます。

<script type="text/javascript">
<!--
// コンボボックス3のオプションリストの初期化

var optlist3 = new Array();
optlist3['none'] = new Array('--- select ---');
<?php


$query1 = "select day, no from $tablename ;";
$rtn1 = pg_Exec( $con, $query1 );
$array1 = array();
while ($row1 = pg_fetch_array($rtn1)) {
$array1[$row1['day']][] = $row1['no'];
}


foreach ($array1 as $key1 => $val1) {
echo "optlist3['",$key1,"'] = new Array('";
echo implode("','",$val1);
echo "');\n";
}
?>// コンボボックス2のオプションリストの初期化

var optlist = new Array();
optlist['none'] = new Array('--- select ---');
<?php


$query = "select id, day from $tablename ;";
$rtn = pg_Exec( $con, $query );
$array = array();
while ($row = pg_fetch_array($rtn)) {
$array[$row['id']] []= $row['day'];
}

foreach ($array as $key => $val) {
echo "optlist['",$key,"'] = new Array('";
echo implode("','",$val);
echo "');\n";
}
?>

// コンボボックスselecter のオプションをlistで初期化する関数

function setSelectOption ( selecter, list ){
selecter.options.length = list.length;
for(i=0; i<list.length; i++){
selecter.options[i].value = list[i];
selecter.options[i].text = list[i];
}
selecter.options[0].selected = true;
}
//-->
</script>
<form name="form1" method="post">
コンボボックス1
<select onchange="setSelectOption(select2, optlist[value])" name="select1">
<option value="none" selected="selected">
--- select ---
</option>
<!-- Start of select1 options -->
<?php
foreach ($array as $key => $val) {
echo "<option value=\"$key\">$key</option>\n";
}

?>

<!-- End of select1 options -->

</select>
<br>
コンボボックス2

<select onchange="setSelectOption(select3, optlist3[value])" name="select2">
<option value="none" selected="selected">
--- select ---
</option>
</select>
<br>
コンボボックス3

<select name="select3">
<option value="none" selected="selected">
--- select ---
</option>
</select>
</form>
Parent: 4029  reply: 4031 返信 編集 削除

[4031] Re.コンボボックスの連動

user: ゆうじ | created: 2007-11-15 18:38
onchange は、値が変更された時のみ呼ばれるので、
値が一つしかない場合はずっと呼ばれることがないとか。
さっきのソースを見る限りその可能性があります。
Parent: 4030  reply: 4036 返信 編集 削除

[4036] Re.Re.コンボボックスの連動

user: けん | created: 2007-11-16 08:49
> onchange は、値が変更された時のみ呼ばれるので、
> 値が一つしかない場合はずっと呼ばれることがないとか。
> さっきのソースを見る限りその可能性があります。

なるほど。早速試してみたらそのようですね。

では、コンボボックス1で選択されても
コンボボックス2「----select-----」の項目が消えずに残っていたら
たとえコンボボックス2の値が1つでも2択という感じにはなりませんかね?

どういうプログラムを作ればいいのか初心者でわからないんですが、
よかったらご教授頂けると幸いです。

こちらでも頑張って調べてみます。

よろしくお願いします。
Parent: 4031  reply: 4037 返信 編集 削除

[4037] Re.コンボボックスの連動

user: ゆうじ | created: 2007-11-16 11:31
optlist をPHPで整形する際、
'--- select ---'を含めておけば選択肢は常に2個以上になります。

var optlist = new Array();
optlist['none'] = new Array('--- select ---');
optlist['200813'] = new Array('--- select ---','2008-03-04');
optlist['200814'] = new Array('--- select ---','2008-03-04');
optlist['200812'] = new Array('--- select ---','2008-03-12');
Parent: 4036  reply: 4038 返信 編集 削除

[4038] Re.Re.コンボボックスの連動

user: けん | created: 2007-11-16 14:45
> optlist をPHPで整形する際、
> '--- select ---'を含めておけば選択肢は常に2個以上になります。
>
>
> var optlist = new Array();
> optlist['none'] = new Array('--- select ---');
> optlist['200813'] = new Array('--- select ---','2008-03-04');
> optlist['200814'] = new Array('--- select ---','2008-03-04');
> optlist['200812'] = new Array('--- select ---','2008-03-12');
>


おーー!!
2行目に--- select ---があるから全てに入ってるもんだと思ってました。
構文を勘違いしてました。

全てスッキリしました!!

どうもありがとうございました!
Parent: 4037  reply: 4067 返信 編集 削除

[4067] Re.コンボボックスの連動

user: けん | created: 2007-12-06 21:48
また壁にぶつかりました。orz

うるう年に対応した月日のコンボボックスのセレクトを作成してみたんですが、
エラーが。。。

申し訳ありませんがまたご教授お願いします。


IEにエラー表示が出ます。

ライン:47
文字:3
エラー:'options'はNullまたはオブジェクトではありません。
コード:0

:ソース

<script type="text/javascript">
<!--
// コンボボックスのオプションリストの初期化
var dayy = new Array();
dayy['none'] = new Array('select');
dayy['1'] = new Array('select','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');
dayy['2'] = new Array('select','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29');
dayy['3'] = new Array('select','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');

// コンボボックスselecter のオプションをlistで初期化する関数

function setSelectOption ( selecter, list ){
selecter.options.length = list.length;
for(i=0; i<list.length; i++){
selecter.options[i].value = list[i];
selecter.options[i].text = list[i];
}
selecter.options[0].selected = true;
}
//-->
</script>
<select onchange="setSelectOption(day, dayy[value])" name="month">
<option value="none" selected="selected">
select
</option>
<!-- Start of select1 options -->
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>

<!-- End of select1 options -->

</select>
<select name="day">
<option value="none" selected="selected">
select
</option>
</select>
Parent: 4038  reply: 4068 返信 編集 削除

[4068] 追記:コンボボックスの連動

user: けん | created: 2007-12-07 08:55
すみません。

エラー表示のライン47ってのは

selecter.options.length = list.length;

ここに対応してます。

余分なソースをカットしたのを忘れてました。
Parent: 4067  返信 編集 削除

[4422] ブラウザの戻るボタン

user: やす | created: 2016-03-29 14:43
はじめまして。
このスレッドをみて私もやりたいことが実現でき大変助かりました。

さて表題の件なのですが、
コンボボックス1、2ともに選択し、submitでページ遷移後、
戻るボタンでページを戻るとコンボボックス1は保持されますが
コンボボックス2が保持されませんでした。
onchangeが呼ばれてないから当然といえば当然です。

私ももう現役を退いてから10年以上なのでjavaやPHPをかいつまみながらの開発です。

onpopstateやonload等が使えるかな?と試しましたが私には無理でした。

これを可能にする方法がありましたらご教授ください。
ブラウザはIEで、セキュリティなどは特に意識の必要はありません。
Parent: 3622  reply: 4423 返信 編集 削除

[4423] Re. ブラウザの戻るボタン

user: ゆうじ | created: 2016-04-01 01:56
こんばんは、やすさん。

最近はがっつりフォームと向き合うことがないので情報が古いと思いますが、「戻る」ボタンは直前に開いたページのキャッシュ(履歴)の呼び出しなので完全な制御は無理だったと思います。ただ考え方てみたのでヒントになれば。

フォームのページが呼び出された後、ajaxでサーバーと通信し、獲得した値でフォームの値を初期化するよう実装してみてはいかがでしょう。「フォームの表示」と「各項目の初期化」をまったく違うプロセスにしてしまうという考え方です。
Parent: 4422  返信 編集 削除

[3523] Re.Javascript と PHP の連携

user: matu | created: 2007-01-05 01:26
こんばんわ。
遅くなってすいません。
ゆうじさん返事ありがとうございます。
教えてもらった(1)の方法でやりたいと思います。
そこで質問なんですが

> (1)あらかじめselect2のoption値を全て獲得して
> Javascriptの2次元配列としてsample関数に準備しておき、
> sample関数が呼ばれた時点で
> valueをキーにselect2のoption値を初期化する。

select2のデータのSQL文はsample関数の外で処理をおこない、処理したデータをsample関数に入れてやればいいですか?

また、PHPの変数をJavaScriptの変数に渡す方法があれば、ご教授ください。
自分でも,もう少し調べてみます。
よろしくお願いします。
Parent: 3520  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 1 番目 次≫ ≪無し
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑