1

以下の3つの部分からなるコードを使用しています。

コードの最初の部分:基本的に、ユーザーがGoogleを選択すると、JavaScript関数changeSearchEngineがトリガーされます。

<p id="searchbox">This paragraph will change once javascript is triggered</p>
<form align=right>
<select name="searchengine" onchange="changeSearchEngine(this.form)">
<option value="google">Google</option>
</select>
</form>

これは、JavaScriptでの私のchangeSearchEngine関数です。

function changeSearchEngine(form)
{
    var searchEngine=form.searchengine.value;
    if (searchEngine=="google")
    {
    var url_google='<form method="get" action="http://www.google.com/search" onsubmit="submitGoogle(this.form)" target="_blank"><input type="text" name="q" size="31" maxlength="255" value="" /><input type="submit" value="Google Search"/></form>';
    document.getElementById("searchbox").innerHTML=url_google;
    }
}

この時点で、すべてが正常に機能しています。グーグルを選択すると、グーグルの検索ボックスが表示されます。私はすべてを検索できます。

onsubmit = "submitGoogle(this.form)"があることに注意してください。ユーザーが検索した用語をSQLテーブルに保存する必要があります。だから私はユーザーがタイプを持っているものをキャプチャするために以下のこのjavascript関数を持っています:

function submitGoogle(form)
{
    alert("Inside submitGoogle function");
        var searchterm=form.q.value;
    alert(searchterm); //to test. this part didnt capture the value.
}

なんとかsubmitGoogle関数を呼び出すことができましたが、searchterm = form.q.valueを使用しているにもかかわらず、qの値を取得できません。私はここで何を間違えましたか?

4

2 に答える 2

1

onsubmitハンドラーで、を渡しますthis.form。ただし、イベントthisをトリガーするのはフォーム自体であるため、すでにフォームを参照しています。submitフォームフィールドにはformプロパティがありますが、フォーム自体にはプロパティがありませform。したがって、ハンドラを変更して、thisの代わりに渡すようにしthis.formます。

http://jsfiddle.net/fmqNj/

onsubmit="submitGoogle(this)"
于 2012-10-10T02:40:56.193 に答える
0

さて、私は1つの可能な解決策を見つけました。私自身の質問に答えさせてください。

changeSearchEngine(form)関数で、次のように変更します。

var url_google='<form method="get" name="googleform" action="http://www.google.com/search" onsubmit="submitGoogle(this.form)" target="_blank"><input type="text" name="q" size="31" maxlength="255" value="hello" /><input type="submit" value="Google Search"/></form>';    

submitGoogle(form)関数で、次のように変更します。var searchterm = document.googleform.q.value;

しかし、それがエレガントでなくても、実践の範囲内でなくても、他の人が私の解決策についてコメントすることを私はまだ望んでいます。:D

于 2012-10-10T02:32:11.367 に答える