硬编码值适用于element.val()未显示结果的位置

时间:2013-03-01 19:04:47

标签: javascript jquery

如果param的值是硬编码的,那么代码工作正常,就好像从输入字段获取值,然后函数getResults()没有显示结果(但是警告显示该值已经已成功提供给param)。请指导。

<script type="text/javascript">

var nexturl ="";
var lastid ="";

$(document).ready(function() {

  //$("#search").keyup(function() {
    //$('#hit').click(function() {  

  //var param = $("#search").val(); 
 $("#search").keypress(function(e) {
    if(e.which == 13) {
    var param = $('#search').val();
        alert(param);

    }
});
  //$(document).ready(function() {
  //var param = "Facebook";
  if (param != "") {
    $("#status").show();
    var u = 'https://graph.facebook.com/search/?callback=&limit=25&q='+param;
    getResults(u);
  };


  $("#more").click(function () { 

    $("#status").show();
    $("#more").hide();  
    pageTracker._trackPageview('/?q=/more');
    var u = nexturl;
    getResults(u);
  });

//};
});
</script>

修改

<script type="text/javascript">

var nexturl ="";
var lastid ="";
var param;
$(document).ready(function() {

 $("#search").keypress(function(e) {
    var param = $('#search').val();
    if (param != "") {
        $("#status").show();
        var u = 'https://graph.facebook.com/search/?callback=&limit=25&q='+param;
        getResults(u);
        }
});
};


  $("#more").click(function () { 

    $("#status").show();
    $("#more").hide();  
    pageTracker._trackPageview('/?q=/more');
    var u = nexturl;
    getResults(u);
  });

});
</script>

2 个答案:

答案 0 :(得分:0)

看看你的变量范围。 var param.keypress函数中定义,因此其范围是该函数的本地范围,它不能被下面的其他代码访问(其范围在(document).ready

还要考虑即使它具有全局范围,您的代码仍然无法正常工作,因为getResults()在加载时执行,.keypress函数显然不会执行,直到按下某个键{ {1}}。

您最好的选择可能是在#search之前定义它:

getResults()

答案 1 :(得分:0)

进一步思考(见评论)。

定义一个全局参数:

var param = "";

然后在你的jQuery准备好之内,将值赋给param,就像这样..

param = somevalue;

请勿在此范围内使用var param。