jquery中的JS函数无法正常工作

时间:2013-11-26 16:34:08

标签: javascript jquery

这是我的JS代码

$(document).ready(function() {

  **$('.sel1').hide();**

  function show_names(str,val) {
    alert("hello");
    $('.sel1').show();
    $.getJSON('j_process.php?j=1&str='+str+'&val='+val, function (data) {
      var html = '';
      var len = data.length;
      for (var i = 0; i< len; i++) {
        html += '<option>' + data[i].name + '</option>';
      }
      $('.sel1').append(html);
    });
    return false;
  }
  return false;
});

这是我的HTML:

<div class="control-group">
  <label for="textfield" class="control-label"><?php if($i==$num_row-1) { echo "Save File As"; } else { echo str_replace("_"," ",$row[0]); } ?></label>
  <div class="controls">
    <input type="text" <?php if($main_box==$i) { echo 'onkeyup="show_names(this.value, '.$main_box.')"';} ?> id="textfield" name="loc<?php echo $i; ?>" <?php if($i==$num_row-1) { echo "autocomplete='off' onkeyup='searchfile(this.value);' "; }?> value="<?php if(isset($_SESSION['loc'.$i])) { echo $_SESSION['loc'.$i]; }?>" maxlength="500" size="50" class="input-xlarge">
  </div>
</div>

我将函数放在文档外部读取,但getJSON现在不能正常工作。

4 个答案:

答案 0 :(得分:1)

正如@Tallmaris所说,您需要在document.ready函数之外移动函数定义,否则您的页面无法看到它。

示例:

function foo(){
  function bar(){

  }
  //I can call bar in here.
  bar();
}

function someOtherFunction(){
 //But I can't call bar() here because it's nested within foo.
}

答案 1 :(得分:0)

show_names()未在您发布的代码的窗口范围内定义。它只在document.onReady处理程序的范围内定义,因此它不能被页面的其余部分调用。

答案 2 :(得分:0)

show_names的范围限定为document.ready处理程序。它不能从外部调用该函数,因为它不是全局范围的。

$(document).ready(function() {
   $('.sel1').hide();
});

function show_names(str,val)
{
    alert("hello");
    $('.sel1').show();
    $.getJSON('j_process.php?j=1&str='+str+'&val='+val, function(data){
        var html = '';
        var len = data.length;
        for (var i = 0; i< len; i++) {
            html += '<option>' + data[i].name + '</option>';
        }
        $('.sel1').append(html);
    });
return false;
}

试试吧。应该适合你。

答案 3 :(得分:0)

$(document).ready(function() {
    $('.sel1').hide();
    return false;
});
function show_names(str,val)
{
    alert("hello");
    $('.sel1').show();
    $.getJSON('j_process.php?j=1&str='+str+'&val='+val, function(data){
    var html = '';
    var len = data.length;
    for (var i = 0; i< len; i++) {
        html += '<option>' + data[i].name + '</option>';
    }
        $('.sel1').append(html);
    });
    return false;
}

并确保调用show_names函数