这是我的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 :(得分: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函数