WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:フォームへのデフォルト値

0:[投稿] one [2003/05/14 17:37 ][環境:mac,IE5 Apache]

分かりにくい説明で申し訳ありませんが、Aというページからのリンクの場合は、フォームのoption value=A、Bというページからのリンクには、option value=Bというように、フォームのselectのデフォルト値にjava scriptなどで反映させることはできるのでしょうか?


1:[回答] ひよこ [URL] [2003/05/15 01:19 ]

できます。
A,B以外ではどうするのでしょうか。


2:[回答] one [MAIL] [2003/05/15 02:24 ]

A,B以外は、何でも良いです。指定してないリンクページからのリンクは、デフォルトを設定しておいてその値で良いです。もう一度、まとめるとAというページからのリンクの場合は、フォームのoption value=A、Bというページからのリンクには、option value=Bというように、それ以外はoption value=Cといった具合です。

よろしくお願いします。


3:[回答] ひよこ [URL] [2003/05/15 03:26 ]

こんな感じ?

<SCRIPT type="text/javascript" language="JavaScript">
<!--
var page;
var aURL = "a.html";
var bURL = "b.html";
var refURL = document.referrer;
if(refURL.indexOf(aURL,0)>0){
     page = "A";
}else {
  if(refURL.indexOf(bURL,0)>0){
     page = "B";
  }else{
     page = "C";
  }
}
function chg(){
 document.Myform.sl.options[0]= new Option(page);
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="chg()">
<FORM name="Myform">
<SELECT name="sl">
 <option value="C">C
 <option value="etc">etc
</SELECT>
</FORM>
</BODY>
</HTML>

数が多いときは配列やfor文を使った方がスマートになると思う・・
(注:ファイル名は注意しないとcba.htmlもa.htmlでヒットしてしまう・・わかりますよね?)


4:[回答] ひよこ [URL] [2003/05/15 03:56 ]

配列に変更してみた。
<SCRIPT type="text/javascript" language="JavaScript">
<!--
var urlData = new Array();

urlData[0] = new Array("default","C");  //デフォルト値
urlData[1] = new Array("a.html" ,"A");
urlData[2] = new Array("b.html" ,"B");
urlData[3] = new Array("c.html" ,"C");

var refURL = document.referrer;
var num = urlData.length;
var page = urlData[0][1];

for (var i=0;i<num;i++){
    if(refURL.indexOf(urlData[i][0],0)>0){page = urlData[i][1];}
}

function chg(){
 document.Myform.sl.options[0]= new Option(page);
}
//-->
</SCRIPT>


5:[回答] one [MAIL] [2003/05/15 19:27 ]

ありがとうございます。しかし、下のように記述したのですが、a.html/b.htmlそれ以外のページも全て<option value="A">が選択されてしまうのですが、なぜでしょうか?お手数かけて申し訳ありません。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html lang="ja">
    <html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=x-sjis">
    <title>test</title>
<SCRIPT type="text/javascript" language="JavaScript">
<!--
var urlData = new Array();

urlData[0] = new Array("default","C"); //デフォルト値
urlData[1] = new Array("a.html" ,"A");
urlData[2] = new Array("b.html" ,"B");
urlData[3] = new Array("c.html" ,"C");

var refURL = document.referrer;
var num = urlData.length;
var page = urlData[0][1];

for (var i=0;i<num;i++){
if(refURL.indexOf(urlData[i][0],0)>0){page = urlData[i][1];}
}

function chg(){
document.Myform.sl.options[0]= new Option(page);
}
//-->
</SCRIPT>
</HEAD>

<BODY onload="chg()">
<FORM name="Myform">
<SELECT name="sl">
<option value="A">A
<option value="B">B
<option value="C">C  
</SELECT>
</FORM>
</BODY>
</HTML>


6:[回答] ひよこ [URL] [2003/05/16 01:15 ]

そういう意味だったのですか。全然勘違いしてました(^_^;;
これでどうでしょう。


<SCRIPT type="text/javascript" language="JavaScript">
<!--
var urlData = new Array();

urlData[0] = new Array("default","C");  //デフォルト値
urlData[1] = new Array("a.html" ,"A");
urlData[2] = new Array("b.html" ,"B");
urlData[3] = new Array("c.html" ,"C");

var refURL = document.referrer;
var num = urlData.length;
var page = urlData[0][1];
var sel = 0;

for (var i=1;i<num;i++){
    if(refURL.indexOf(urlData[i][0],0)>0){page = urlData[i][1];sel = i-1;}
}

function chg(){
 document.Myform.sl.options[sel].selected = true;
}
//-->
</SCRIPT>


7:[回答] ひよこ [URL] [2003/05/16 01:23 ]

また間違えた・・訂正
<SCRIPT type="text/javascript" language="JavaScript">
<!--
var urlData = new Array();

urlData[0] = "default";  //デフォルト値
urlData[1] = "a.html";
urlData[2] = "b.html";
urlData[3] = "c.html";

var refURL = document.referrer;
var num = urlData.length;
var sel = 0;

for (var i=1;i<num;i++){
    if(refURL.indexOf(urlData[i],0)>0){sel = i-1;}
}

function chg(){
 document.Myform.sl.options[sel].selected = true;
}
//-->
</SCRIPT>


8:[回答] one [MAIL] [2003/05/16 03:31 ]

何度も申し訳ありません。ひよこさん。やっぱり同じようにa.html/b.htmlとそれ以外のページからのリンクも全て<option value="A">が表示されます。何か分りましたら、お願いします。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=x-sjis">
<title>test</title>
<SCRIPT type="text/javascript" language="JavaScript">
<!--
var urlData = new Array();

urlData[0] = "default"; //デフォルト値
urlData[1] = "a.html";
urlData[2] = "b.html";
urlData[3] = "c.html";

var refURL = document.referrer;
var num = urlData.length;
var sel = 0;

for (var i=1;i<num;i++){
if(refURL.indexOf(urlData[i],0)>0){sel = i-1;}
}

function chg(){
document.Myform.sl.options[sel].selected = true;
}
//-->
</SCRIPT>
</HEAD>

<BODY onload="chg()">
<FORM name="Myform">
<SELECT name="sl">
<option value="a">a
<option value="b">b
<option value="c">c
</SELECT>
</FORM>
</BODY>
</HTML>


9:[回答] ひよこ [URL] [2003/05/16 11:26 ]

ローカルでチェックしてませんか?
実サーバへアップしてチェックしないとReferrerが旨く取得出来ないと思います。


10:[回答] ひよこ [URL] [2003/05/16 12:18 ]

追記ですが、デフォルト値はvar sel=0; の所の数値で変えてください。
例えば「C」としたいときは var sel=3;


11:[回答] ひよこ [URL] [2003/05/16 12:21 ]

また間違えた(汗) 
「C」としたいときは var sel=2;
(目的位置のelement値です)


12:[回答] one [MAIL] [2003/05/17 18:04 ]

「C」としたいときは var sel=2; として、サーバにアップしてみたんですけど、ダメでした。何度もお手数かけて申し訳ないのですが。何か考えられることがあるようでしたら、お願いします。


13:[回答] ひじ [2003/05/17 18:44 ]

MacIEを使用しているのであれば、
[編集]メニュー→[初期設定...]→[Webブラウザ]→[Webコンテンツ]→[アクティブ コンテンツ]→[スクリプト エラーの警告を表示]チェックボックスをonにしているでしょうか。


14:[回答] ひよこ [URL] [2003/05/17 19:48 ]

Mac IE5でも私のところでは問題ないようです。
ちょっと気になるのですが、ソースの空白に全角スペースを使ってませんか?


15:[完了] one [MAIL] [2003/05/22 18:11 ]

返事が遅れてすいません。ソースの空白を削除したら動きました。ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World