4

我正在研究 jquery 搜索框。

我在从 html 获取字符串 var 时遇到了麻烦。

在我的 html 文件中。

我有..

<header>
  <div id="searchBox">
    <form name="searchForm">
      <div>
        <i class="icon-search icon-large icon-height"></i>
        <input name="searchfield" type="search" size="20" maxlength="30">
      </div>
    </form>
  </div>
</header>

在我的 jquery 文件中,我有

$(".icon-search").click(function() {
  var searchstring  = $(this).text('#searchfield');// $('#searchfield');
  searchstring.focus();
  //$('#searchBox').html($('input:searchfield').val());
  alert("searchfield.  " + searchstring +  " hahah");
});

当我点击搜索一些字符串时。

它显示了 Object 对象而不是一些字符串。

我不太确定如何将对象转换为字符串。

有人知道如何转换吗?

4

2 回答 2

10

这行代码没有任何意义:

var searchstring  = $(this).text('#searchfield');// $('#searchfield');

确实应该是:

var searchstring = $('#searchfield');

然后你就可以做到:

searchstring.focus();

并使用以下命令检索文本.val()

alert("searchfield.  " + searchstring.val() +  " hahah");

.text()获取或设置 HTML 元素的文本内容。如果在没有任何参数的情况下调用它,它会获取一个值,如果将值传递给它,它会设置一个值。因此$(this).text('#searchfield')$(this)(your .icon-search) 的内部文本设置为 string "#searchfield"

现在,一个表单元素没有内部文本,它有一个,因此.val(),它的工作方式与.text()

alert(myTextbox.val()); // get value
myTextbox.val('test');  // set value

编辑:

此外,$('#searchfield')查找 ID 为“searchfield”的元素。您应该添加id="searchfield"到您的文本字段,或将您的脚本更新为

var searchstring = $('input[name=searchfield]');
于 2012-07-30T06:07:18.460 回答
0

您的代码访问 DOM 对象。

尝试$("#searchfield").attr('value')

您可以将所需的任何属性放入 attr() 函数并获取它。要获取其 ID,只需使用 $("#searchfield").attr('id')

就我个人而言,我经常使用val()它,因为它会导致其他一些 DOM 对象出现跨浏览器问题。

于 2012-07-30T06:13:02.090 回答