現在、通販サイトを運営中で、それぞれの商品ページに問合せフォームを組み込んでいますが、その商品ページを訪問されるときにお客様はすでに商品名(長い記号番号)を入力されているので、問合せフォームで再度商品名を入力していただくのは酷と思い、formのinputのvalueに商品名をあらかじめ入力しておくようにしています。
<input type="text" name="希望商品" value="(商品名)" >
この度、商品数の増加に伴い、商品ページを簡略化するため、共通しているform部分をインクルードしたいのですが、その中の(商品名)を関連付ける方法を教えてください。
例えば、ABC123という商品名のページからの問合せの場合、インクルードされるform内が
<input type="text" name="希望商品" value=”ABC123”>
になるようにしたいのです。
ちなみにABC123という商品名は、その商品ページの中(form部分以外)に入力しています。
今まで下記の方法でOKだったのですが、この度確認するとformのinputのvalue内が空白になっていました。何が間違っているのでしょうか?
<!DOCTYPE html>
<html lang="ja">
<head>
<script>
$(function() {
$("#form").load("./form.html");
});
</script>
<script>
function setValue() {
var value = "(機種名)";
if (value) {
document.form._希望機種.value = value;
}
}
</script>
</head>
<body onload="setValue();">
<div id="form"></div>
</body>
</html>
<form name="form" action="・・・>
<input type="text" name="_希望機種" size="50">
</form>
No.1ベストアンサー
- 回答日時:
こんにちは
イマイチよくわかりませんが、ご質問文の一番下の「<form name="form"~~」以下の内容は、後から読み込もうとしている内容で、別ファイルという意味ですよね?
(今までは、直接htmlの中に記述されていたものと推測します)
>何が間違っているのでしょうか?
実行順をよく考えればわかると思いますが、後から読み込む方法の場合、「body onload」でsetValue関数が実行される時には、まだformの内容が読み込まれていない可能性が高いです。
ですので、値を設定するべき対象要素がまだ存在しないため設定はされず、その後に読み込まれた要素は空白のままということと推測します。
あるいは、要素の指定が正しくできていないかでしょう。
form要素にタグ名称と同じformのidを付けていて、「document.form」のような直接個別の名で指定する記述方法なので場合によっては、確実ではないことがあります。
目的要素にidがあるのですから、getElementByIdやquerySelectorを用いて指定する方が、安全で確実と思います。
さらには、ご提示のスクリプトを見るとjQueryなどのライブラリを用いているものと思われますが、ご提示のソースには、それを読み込んでいる記述がありません。
ですので、そもそも「$関数」でエラーになっていて動作していないだけという可能性もあります。
(記述を省略しただけなのかもしれませんが、全文書形式で記述してあるので・・・)
また、ライブラリを利用している場合は、前述の要素の指定でもそちらを利用した方が簡便かと思います。
状況がよくわからないので、とりあえず、実行順序に関しての対処法のみですが。
setValue関数が確実にload後に実行されるように、
loadメソッドのcallback(complete)でsetValue関数を呼び出すようにしてください。
(そうすることで順序が守られるはずです)
https://api.jquery.com/load/
「実行順をよく考えればわかると思いますが、・・・・・」のご指摘で、
<script>
function setValue() {
var value = "(機種名)";
if (value) {
document.form._希望機種.value = value;
}
}
</script>
を
<div id="form"></div> の下に移動したところ見事に解決しました。
誠にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
submitした値を返したい
-
複数のフォームを一括で自動送...
-
タブキーでなくエンターキーで...
-
enterキーでのtab移動
-
別ウィンドウへのsubmitの挙動...
-
指定したタグを書き換えるには?
-
フォームのvalueに配列を格納す...
-
フォームが空欄の時にフォーム...
-
POST時に要素を削除してからPOST
-
クライアントマシンからルータ...
-
javascript による POST 送信時...
-
関数を順番に呼び出したい
-
ページを再読み込み後、再読み...
-
リンク先アドレスの一部にテキ...
-
チェックボックスのON/OFFでVal...
-
正規表現で複数マッチ条件で悩...
-
onchangeイベントを強制的に発...
-
プルダウン 項目が多いので先頭...
-
TextBoxに半角数字以外を入れた...
-
return trueとreturn falseの用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1つのページにformを2つ設置。2...
-
複数のフォームを一括で自動送...
-
Cookieに保存されない
-
別ウィンドウへのsubmitの挙動...
-
submitした値を返したい
-
formのsubmitイベントの発生に...
-
javascriptでASPにデータを渡す
-
フォームが空欄の時にフォーム...
-
focus()が上手くいかない
-
iframe内のformをサブミットす...
-
POST時に要素を削除してからPOST
-
FormのonsubmitでJavaスクリプ...
-
1つのform内に2つのsubmitボタ...
-
JavascriptからSubmitして画面...
-
submitボタン押下後、disabled...
-
添付ファイルの未選択チェック方法
-
enterキーでのtab移動
-
ファイル選択と同時にアップロ...
-
別窓ウィンドウから親ウィンド...
-
Javascript IEで「識別子があり...
おすすめ情報