-1

在 phonegap 中,我使用了一个 jquery 移动框架。我想通过使用页面 url 将表单数据传递到下一页,这是一个 div。我尝试使用 GetElementByID 来检索参数。它向我展示了“[object HTMLDivElement]”。我不是我想要的结果。我该如何解决?

下面是转换到下一页的功能 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 的元素search。你应该改变这个。这不仅会使阅读您的代码的任何人感到困惑,而且还会导致您在此处遇到的问题。getElementById返回具有指定 ID 的第一个元素。在您的情况下,这是一个 div,而不是输入。

如果你真的想坚持你所拥有的,你可以这样做:

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

编辑:根据您的评论,这是如何做到的。jQuery 的val()函数对selects 和 checkbox 的支持非常好。您所要做的就是调用val()select 元素本身,它会返回当前选定的值。所以,这样做:

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

不过,我真的建议使用 ID 而不是名称。我这样做是因为和以前一样,您有多个具有相同 ID 的元素。在 99% 的情况下,这是一个禁忌。

于 2013-03-21T18:11:07.937 回答
0

您有多个 id 为“search”的 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 回答