Если вы перебираете формы из функции, то:
> var prevonsubmit = formobj.onsubmit;
> if (prevonsubmit) {
> formobj.onsubmit = function f() {
> if(prevonsubmit()) {
prevonsubmit имеет замыкание на внешнюю переменную, оно будет ссылаться на значение last prevonsubmit, поэтому все они будут ссылаться на одну и ту же функцию. Это может «сработать», но не удастся, если какая-либо из ваших форм имеет текущего слушателя, который отличается от любой другой формы.
> interceptform();
Вы можете просто передать this из функции в interceptform :
interceptform(this);
и interceptform будет передана ссылка на элемент, вызывающий функцию (предположительно, отправляемая форма).
> return true;
> }
> return false;
Это (вероятно) отменит отправку любой формы, у которой нет существующего слушателя. Это то, что вы хотите?
> };
> } else {
> formobj.onsubmit = function ff() {
Выражения именованных функций, как известно, содержат ошибки по крайней мере в одном широко используемом браузере. Если вам не нужно имя (и оно, кажется, здесь ни для чего не используется), не используйте его. Сохраняйте функцию анонимной.
> interceptform();
> return true;
> };
> }