我有一个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文件的唯一内容是有效的行。
哎呀!!!
答案 0 :(得分:9)
自动关闭<script>
代码无效,<:p>
<script type="text/javascript" src="js/DOTAutocomplete.js" />
应该是:
<script type="text/javascript" src="js/DOTAutocomplete.js"></script>
另请注意,由于您使用的是选择器$('#' + matchFieldName)
,因此该文件应该在该元素出现后包含,或者将您的代码包装在document.ready
处理程序中,例如:
$(function() {
//your code...
});
答案 1 :(得分:1)
您可能无法正确定位文件。你正在使用type =“text / javascript”,对吧?如果它在内联工作但不是src引用,那几乎可以肯定你没有指明文件的路径。
答案 2 :(得分:0)
尝试此操作,将此代码放回外部文件中,确保每个Nick的帖子都有一个有效的脚本包含标记。
$(function(){
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;
}
});
});
答案 3 :(得分:0)
如上面Craver先生所述,自动关闭Javascript标签并不好。以下是对原因的讨论:
Why don't self-closing script tags work?
没有令人满意的理由 - 只是因为SCRIPT标签没有在规范中标记为具有EMPTY的内容模型 - 可能是因为稍后添加了src属性。