当Chrome尝试在页面上加载脚本文件时,收到主题错误。它说它在javascript文件的最后一行。我似乎找不到任何问题。 firefox中没有错误,脚本可以按预期工作。仅使用表单验证
// JavaScript Document
$(function() {
$('#wm-form').submit(function() {
var errors = false;
var errorMsg = "";
$('.required').each(function() {
if(!validField($(this))) {
errorMsg += $(this).attr('name').capitalize() + " cannot be blank\n";
errors = true;
}
});
var emailAddress = $('#email');
if(isValid(emailAddress) && !(/^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$/.test(emailAddress.val()))) {
errorMsg += "Not a valid email address. Please enter in a correctly formatted email address";
errors = true;
}
if(errors) {
alert(errorMsg);
return false;
}
});
$('.form-focus').click(function() {
$(document).scrollTop(0);
$('#first_name').focus();
return false;
});
});
function validField(element) {
if(!isValid(element.val()) || (element.attr('placeholder') && element.attr('placeholder') == element.val()) ||
(element.attr('type') == 'radio' && !checkedRadio(element))) {
return false;
}
else {
return true;
}
}
function isValid(ele) {
if(ele == null || ele == '') {
return false;
}
else {
return true;
}
}
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
};
function checkedRadio (element) {
var valid = false;
$('input[name="'+ element.attr("name") +'"]:checked').each(function() {
valid = true;
});
return valid;
}
该来源结尾处有某种伪造的字符。尝试删除最后一行并将其添加回去。
我无法确切知道那里有什么...
edit —我认为这是一个零宽度的空间,Unicode 200B。似乎很奇怪,我当然不能确定它不是Stackoverflow工件,但是当我将包括最后一行在内的最后一个函数复制/粘贴到Chrome控制台时,就会收到您的错误消息。
此类字符的臭名昭著的来源是jsfiddle之类的网站。我并不是说它们有什么问题-这只是某些事情的副作用,也许是使用内容可编辑的输入小部件。
[如果您怀疑自己有这种病,并且您使用的是MacOS或Linux / Unix,od
命令行工具可以(尽管相当难看)向您显示字符中的数值源代码文件。某些IDE和编辑器也可以显示“有趣”字符。请注意,这样的字符不是always问题。例如,在字符串常量中嵌入Unicode字符是完全可以的(无论如何,使用最合理的编程语言)。当语言解析器在不希望出现字符时遇到字符时,就会开始出现问题。
粘贴从jsfiddle复制的代码后,在Chrome中出现相同的错误。
[如果您从jsfiddle的面板中选择所有代码并将其粘贴到自由文本编辑器Notepad ++中,则应该可以将问题字符视为问号“?”。在代码的最后。删除此问号,然后从Notepad ++复制并粘贴代码,问题将消失。
当多行字符串包含换行(\n
)字符时,我有相同的错误。将所有行合并为一个(从而删除所有新行字符),然后将其发送到用于求解的浏览器。但是编写代码非常不方便。
[通常我不明白为什么这是Chrome中的问题,直到我遇到一条声明,说Chrome中的当前JavaScript引擎版本不支持多行字符串,多行字符串用单引号引起来并带有换行符([C0 ])中的字符。为了使其工作,多行字符串需要用双引号引起来。将我的代码更改为此可以解决此问题。
我将尝试查找对证明这一点的标准或Chrome文档的引用。在此之前,请尝试此解决方案,并查看是否也适用。
我在Chrome中有相同的错误。Chrome控制台告诉我,错误出在HTML文件的第一行。
实际上是在.js文件中。因此请注意\n
错误类型。