Я пытаюсь понять поведение QUnit, используя наглость в Visual Studio. Следующий плагин JQuery должен предотвращать двойную отправку формы:
$.fn.preventDoubleSubmit = function () {
$(this).submit(function (e) {
if (this.beenSubmitted) {
return false;
}
else {
this.beenSubmitted = true;
}
});
return this;
};
Он используется следующим образом:
<script>
$(function () {
jQuery('#someForm).preventDoubleSubmit();
});
</script>
Теперь я хочу протестировать его с помощью QUnit, чтобы каждый раз при отправке формы счетчик увеличивался, и, следовательно, мы могли проверить, отправлена ли форма. вот так:
/// <reference path="../jquery-1.10.2.js" />
/// <reference path="extensions.js" />
(function ($) {
var hasSubmitted = 0;
this.$form.preventDoubleSubmit();
this.$parent.on("submit", function () {
hasSubmitted++;
});
this.$form.submit();
equal(hasSubmitted, 1, 'It should have been submitted');
this.$form.submit();
equal(hasSubmitted, 1, 'It should not have been submitted');
});
})(jQuery);
Однако форма представляется дважды отправленной. Тем не менее, за пределами QUnit код работает так, как ожидалось (форма отправляется только один раз).
Что здесь происходит и/или как правильно тестировать отправку форм в QUnit и наглости? Спасибо!
p.s. пробовал использовать движки Phantom и Chrome, но результат тот же.
this
получил предоставленный неполный код (скобки не совпадают, поэтому предполагается, что что-то отсутствует). - person freedomn-m   schedule 04.02.2019return false
. Проверьте этот вопрос/ответ на двойном отправить обработчики событий. - person Jordan Kasper   schedule 05.02.2019