【发布时间】:2012-01-04 04:40:40
【问题描述】:
可能重复:
jQuery variable claiming it's undefined when it has been defined
问题是,当在 firefox 中打开它并为 input 1 输入一个值并选择它时,firebug 说变量 phone 未定义。我尝试在开始时定义变量,但它仍然停止工作。
这是 jQuery:
$(document).ready(function() {
var phone; //fix scoping
var phoneid;
var firmware;
var firmwareid;
$("#input1").autocompleteArray(["iPhone 2G","iPhone 3G","iPhone 3GS","iPhone 4","iPhone 4s"],
{ minChars:1,
matchSubset:1,
onItemSelect:selectPhone,
onFindValue:findPhone,
autoFill:true,
maxItemsToShow:10,
selectFirst:true,
});
$("#input2").autocompleteArray(["1.1","1.2","1.3","1.4","1.5"],
{ minChars:1,
matchSubset:1,
onItemSelect:selectFirmware,
onFindValue:findFirmware,
autoFill:true,
maxItemsToShow:10,
selectFirst:true,
});
function findPhone(li) {
if( li == null ) return alert("No match!");
phone = li.selectPhone;
phoneid = phone.replace("iPhone ","iphone").toLowerCase();
};
function findFirmware(li) {
if( li == null ) return alert("No match!");
firmware = li.selectFirmware;
firmwareid = phone.replace(".","");
$(".info").hide
$(phoneid+firmware).show
};
function selectPhone(li) {
findPhone(li);
}
function selectFirmware(li) {
findFirmware(li);
}
});
这是 HTML:
<div id="formcontainer">
<input id="input1"/>
<input id="input2"/>
</div>
<div id="iphone2g11" class="info" style="display:none">iPhone 2G</div>
<div id="iphone2g12" class="info" style="display:none">iPhone 3G</div>
<div id="iphone2g13" class="info" style="display:none">iPhone 3GS</div>
<div id="iphone2g14" class="info" style="display:none">iPhone 4</div>
<div id="iphone2g15" class="info" style="display:none">iPhone 4S</div>
我正在使用这个插件来自动完成http://www.pengoworks.com/workshop/jquery/autocomplete.htm
【问题讨论】:
-
尝试将 var 声明移到 $(document).ready 函数之外。
-
@Fosco 不,还是同样的错误。
-
使用自动完成而不是 autocompleteArray...
-
您应该做的一件事是删除选项列表末尾的逗号;
selectFirst:true,是设置的最后一个属性,因此逗号在技术上使 Javascript 无效,并且可能会产生副作用,具体取决于您使用的浏览器及其设置。 -
我应该提到,当输入这两个值时,它应该会显示相关的 div。自动完成现在正在工作,但它仍然没有显示 div。这是我输入第一个值时遇到的错误。 cl.ly/3u0h082G1G2I2k281Q07
标签: javascript jquery forms jquery-plugins autocomplete