(см ответ на обновленный вопрос ниже)
Это не ошибка синтаксиса. Это логическая ошибка.
становится немного понятнее, если вы форматировать код последовательно:
$(document).ready(function() {
minTime(1.5);
function minTime(minTime) {
var startTime = new Date();
// Hooking up a click handler
$("[class*=bfasg] .radio").click(function() {
// This code doesn't run until/unless someone clicks
// one of the `[class*=bfasg] .radio` elements.
$("#movenextbtn").click(function() {
var endTime = new Date();
if ((endTime - startTime)/1000 <= minTime) {
alert('You must spend at least ' + minTime + ' seconds on the question.');
return false;
} else {
return true;
}
});
});
}
});
Что вы сделали Eсть сказал «Когда кто-то нажимает на [class*=bfasg] .radio
элемент, подключить обработчик событий на #movenextbtn
элемент»
Возможно, вы не хотите ждать, чтобы подключить событие, пока кто-то не нажмет на переключатель. Если ваша цель состоит в том, чтобы подключить событие щелчка на обоих наборов элементов, объединить их в том же селекторе, как вы бы в CSS:
$(document).ready(function() {
minTime(1.5);
function minTime(minTime) {
var startTime = new Date();
$("[class*=bfasg] .radio, #movenextbtn").click(function() {
var endTime = new Date();
if ((endTime - startTime)/1000 <= minTime) {
alert('You must spend at least ' + minTime + ' seconds on the question.');
return false;
}
});
}
});
(Кстати, возвращаясь true
из обработчика событий JQuery не имеет смысла, поэтому я удалил его выше)
Ниже вы прокомментировали:.
Wha Это происходит потому, что я хочу щелкнуть переключатель, чтобы автоматически запускать кнопку «Далее» для перехода на следующую страницу, так как у меня есть один вопрос на странице.
Это не принципиально меняет ситуацию. Вы не указали, что кнопка делает для перехода на следующую страницу, но вы просто поместите этот код в один обработчик click
выше. Например, вы по-прежнему подключаете click
как к переключателям, так и к кнопке, и вы по-прежнему обрабатываете это событие с использованием общего кода. Например:
$(document).ready(function() {
minTime(1.5);
function minTime(minTime) {
var startTime = new Date();
$("[class*=bfasg] .radio, #movenextbtn").click(function() {
var endTime = new Date();
if ((endTime - startTime)/1000 <= minTime) {
alert('You must spend at least ' + minTime + ' seconds on the question.');
return false;
} else {
// ****Move to next page here****
}
});
}
});
В качестве альтернативы, вы можете иметь переключатель нажмите вызвать событие щелчка на кнопке, например:
$(document).ready(function() {
minTime(1.5);
function minTime(minTime) {
var startTime = new Date();
// Hook up `click` on the radio buttons
$("[class*=bfasg] .radio").click(function() {
// Respond to click by firing click on the #movenextbtn
$("#movenextbtn").click();
});
// Hook up `click` on the #movenextbtn
$("#movenextbtn").click(function() {
var endTime = new Date();
if ((endTime - startTime)/1000 <= minTime) {
alert('You must spend at least ' + minTime + ' seconds on the question.');
return false;
}
});
}
});
Я не большой поклонник стрельбы синтетических событий, как, что, когда вы можете использовать общую логику, но это вариант.
попробуйте добавить цитаты вокруг 'bfasg' –
@JanDvorak: Это не нужно, если нет пробелов. –
В коде, который вы указали, нет синтаксической ошибки, вы получаете ошибку времени выполнения и, если да, то что это такое и на какой строке? – HMR