У меня есть следующее поле ввода с встроенным обработчиком событий, содержащим несколько функций. Я надеялся, что если reqField()
вернется false
, остальные функции будут отменены, но этого не произойдет.Как сделать 'return false' предотвращать выполнение последовательных функций в встроенном обработчике событий onclick?
Все, что происходит, заключается в том, что reqField()
прекращен раньше, и если бы было введенное по умолчанию действие для поля ввода, это было бы предотвращено. В любом случае, для достижения результата, который я получил (прекращение оставшихся функций).
Кстати, я не могу просто удалить их из onclick до returning false
, потому что они должны оставаться на месте для следующего события onblur
.
function getnDisplayTextInputBox(id) {
var s = document.getElementById(id);
s.setAttribute('onclick', '');
var obj = getDataAttribs2Obj(id);
var str = getParamStrFromDataObj(obj);
s.innerHTML = "<input type=\"text\" data-param=\""+obj['param']+"\" id=\"edit\" value=\""+htmlentities(s.innerHTML)+"\" onblur=\"return reqField(this); postData('"+obj['sendtourl']+"', '"+str+"&spanid="+id+"&newVal='+this.value, 'replaceTextTextInputFieldWithValue(resp);', '','');\">";
document.getElementById('edit').focus();
}
выше функция заменяет текст в span
с полем ввода, заполненное тем же текстом, когда пользователь нажимает на оригинальном тексте. Затем они могут редактировать текст, который отправляется на сервер и сохраняется onbur
.
Некоторые из пролетов имеет атрибут data-param='required'
и если да, то reqField()
будет требовать, чтобы поле не пусто и будет return false
, если она (после оповещения пользователя о проблеме с встревоженным полем). Очевидно, что я не хочу, чтобы следующая функция в очереди срабатывала, отправляя пустое поле на сервер для сохранения или после того, как оно меняет место ввода для текстового текста в span
.
'return' заканчивает свой код и "возвращается" к тому, что называют его. –
Мое предложение - потерять встроенные события и использовать обработчик событий. Сохраните возвращаемое значение функции в переменной. Затем используйте 'if', чтобы увидеть, следует ли вам закончить или продолжить. –
@RocketHazmat Итак, вы имеете в виду глобальную переменную, которая может быть проверена следующими функциями? Я думаю, что это может сработать. –