我有一个JavaScript函数一直让我发疯。这是该问题的最新变化。如果我将代码放在表单末尾之后(即在标记之后),则代码工作得很好;但是如果我将脚本引用引用到代码中,则会加载但不会执行。
这有效:
<script type="text/javascript">
var matchFieldName = 'dotmatch';
var resultFieldName = 'dotnumber';
var lookupURL = "/AutoSuggestJSTest/AutoSuggest.asmx/DOTFind";
var labelFieldName = "JobTitle";
var valueFieldName = "DOTNumber";
$('#' + matchFieldName).autocomplete({
source: function(request, response) {
$.ajax({
type: "POST",
url: lookupURL,
contentType: 'application/json',
dataType: "json",
data: JSON.stringify({ prefixText: request.term, count: 20 }),
success: function(data) {
var output = jQuery.parseJSON(data.d);
// var output = eval(data.d);
response($.map(output, function(item) {
var lbl = "item." + labelFieldName + " (item." + valueFieldName + ")";
var val = "item." + valueFieldName;
return {
// label: lbl,
// value: val
// label: eval('item.' + lableFieldName + '(item.' + valueFieldName + ')'),
// value: eval('item.' + valueFieldName)
label: item.JobTitle + "( " + item.DOTNumber + ")",
value: item.DOTNumber
}
}));
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
},
minLength: 2,
select: function(event, ui) {
$('#' + resultFieldName).val(ui.item.value);
return ui.item.label;
}
});
</script>
</div>
但这不是:
</form>
<div>
<script type="text/javascript" src="js/DOTAutocomplete.js" />
</div>
</body>
.js文件的唯一内容是有效的行。
啊!
请您参考如下方法:
自动关闭的<script>
标记无效,这是:
<script type="text/javascript" src="js/DOTAutocomplete.js" />
应该:
<script type="text/javascript" src="js/DOTAutocomplete.js"></script>
还要注意,由于您使用的是选择器
$('#' + matchFieldName)
,因此该文件应该在该元素出现之后包含在文件中,或者将代码包装在
document.ready
处理程序中,例如:
$(function() {
//your code...
});