2013-11-26 112 views
-4

这里是我的JS代码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现在没有工作。

+0

您正在使用什么版本的jQuery的调用函数show_names? – krillgar

+7

这是一个函数定义,把它放在'$(document).ready(...)'位 – Tallmaris

+2

以外$ main_box的值是多少? – SHIN

回答

0

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

+0

我怪我的flakey PHP解析器在我的代码阅读器中的最初错误... –

+0

警报框现在可以工作,但getJSON不起作用。 – Ankur

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. 
} 
+0

警报框现在可用,但getJSON不起作用。 – Ankur

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; 
} 

尝试。应该适合你的工作。

+0

警报框现在可用,但getJSON不起作用。 – Ankur

+0

什么是不工作?它运行吗? –

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; 
} 

并确保

+0

警报框现在可用,但getJSON不起作用。 – Ankur