-1

phonegapでは、1つのjqueryモバイルフレームワークを使用します。そして、ページのURLを使用して、フォームデータをdivである次のページに渡したいと思います。GetElementByIDを使用してパラメーターを取得しようとしています。「[objectHTMLDivElement]」と表示されます。私は私が望んでいた結果ではありません。どうすれば解決できますか?

以下は次のページに変更する関数ですDIVは私のphonegapのコードです:

<script type="text/javascript">
$('#home').live('pagecreate',function(event) { 
    $("#form").submit( function (e) {
            e.preventDefault();
            var x=document.getElementById("search");
            $.mobile.changePage("#page1?param1="+x);
    });
});
</script>

そしてフォームhtml:

<form id="form" method="POST" action="page1" data-ajax="false">
                <div data-role="fieldcontain" id="search">
                    <fieldset data-role="controlgroup">
                        <label for="search">
                            Search
                        </label>
                        <input name="search" id="search" placeholder="" value="" type="search" />
                    </fieldset>
                </div>
                <div data-role="fieldcontain" id="searchmethod">
                    <label for="searchmethod">
                    </label>
                    <select id="searchmethod" name="searchmethod" data-theme="e">
                        <option value="keyword">
                            Keyword
                        </option>
                    </select>
                </div>
                <div data-role="fieldcontain" id="searchlocation">
                    <label for="searchlocation">
                    </label>
                    <select name="searchlocation" data-theme="e">
                        <option value="Entire Collection">
                            Entire Collection
                        </option>
                    </select>
                </div>
                <input type="submit" value="Submit" />
            </form>
4

2 に答える 2

0

編集: id を持つ 2 つの要素があることに気付きましたsearch。これを変更する必要があります。コードを読む人を混乱させるだけでなく、ここで経験しているような問題も引き起こします。指定された ID を持つ最初のgetElementById要素を返します。あなたの場合、それは入力ではなくdivです。

ただし、本当に自分の持っているものに固執したい場合は、次のようにすることができます。

var x = $('input#search').val(); //Suggesting jQuery since you're already using it.

編集:コメントごとに、これを行う方法は次のとおりです。jQuery の関数は、 とチェックボックスval()を非常によくサポートしています。selectselect 要素自体を呼び出すだけval()で、現在選択されている値が返されます。したがって、次のようにします。

$("[name='searchmethod']").val();
$("[name='searchlocation']").val();

ただし、名前ではなくIDで行うことをお勧めします。以前と同様に、同じ ID を持つ複数の要素があったため、名前を付けました。これは、99% の状況でノーノーです。

于 2013-03-21T18:11:07.937 に答える
0

ID「検索」の HTML 要素が複数ありますが、これは不適切です。ID は一意である必要があります。純粋な JavaScript 関数 を呼び出すとgetElementById、最初に一致した<div data-role="fieldcontain" id="search">.

DIV または INPUT の ID を変更する必要があります。次に、joeframbach が提案したものを使用できます。

var x=document.getElementById("searchInput").value;

または、jQuery を使用して要素を選択し、その値を取得することもできます。

var x=$("input#search").val();

質問の HTML 構造の検索方法と検索場所を取得するには:

var method=$("select#searchmethod").val();

var location=$("select[name='searchlocation']").val(); // locate element by name since ID is not set
于 2013-03-21T18:12:11.117 に答える