;Можливий дублікат: SyntaxError: Unexpected token ILLEGAL
Отримання помилки на цю тему, коли 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;
}
В кінці цього джерела є якийсь фальшивий символ. Спробуйте видалити останній рядок і додати його назад.
Я не можу зрозуміти, що саме там, але ...
*Я думаю, що це пробіл нульової ширини, Unicode 200B. Виглядає досить дивно, і я не можу бути впевнений, що це не артефакт Stackoverflow, але коли я копіюю/вставляю цю останню функцію, включаючи повний останній рядок, в консоль Chrome, я отримую вашу помилку.
Сумнозвісним джерелом таких символів є сайти на кшталт [jsfiddle](http://jsfiddle.net). Я не кажу, що з ними щось не так, це просто побічний ефект чогось, можливо, використання віджетів введення, що редагуються вмістом.
Якщо ви підозрюєте, що у вас цей недуг, і ви працюєте в MacOS або Linux/Unix, інструмент командного рядка od
може показати вам (хоч і в досить потворному вигляді) числові значення в символах файлу вихідного коду. Деякі IDE та редактори можуть показувати і &quo ;кумедні&quo ; символи. Зауважимо, що такі символи не є завжди проблемою. Цілком нормально (у більшості розумних мов програмування, у всякому разі), коли в рядкових константах, наприклад, присутні вбудовані символи Unicode. Проблеми починають виникати тоді, коли синтаксичний аналізатор мови зустрічає ці символи там, де він їх не очікує.
Таку ж помилку отримую в Chrome після вставки коду, скопійованого з jsfiddle.
Якщо ви виділите весь код з панелі в jsfiddle і вставите його в безкоштовний текстовий редактор Notepad ++, ви повинні побачити проблемний символ у вигляді знака питання "?" в самому кінці вашого коду. Видаліть цей знак питання, потім скопіюйте і вставте код з Notepad++ і проблема зникне.
У мене була така ж помилка в Chrome. Консоль Chrome повідомила мені, що помилка була в 1-му рядку HTML-файлу.
Насправді вона була в файлі .js. Тож слідкуйте за помилками типу setValidNou(1060, $(this).val(), 0')
.