WedX - журнал о программировании и компьютерных науках

Knockout не связывает отправку с JQuery1.10.2

РЕДАКТИРОВАТЬ: на самом деле это Knockout, JQuery 1.10.2 и попытка переопределить функцию jquery.unobtrusivevalidation ErrorPlacement... останавливая привязку отправки к элементу формы.

Если я запущу тот же код с JQuery 1.8.2, а затем просто изменю свой файл JQuery на 1.10.2, моя функция отправки перестанет срабатывать... кто-нибудь видел подобное?

я собираюсь опубликовать столько релевантного кода, сколько смогу, на случай, если это что-то неожиданное, но главное, что submitForm отлично привязан к событию отправки формы с jquery 1.8.2 и без каких-либо других изменений jquery 1.10.2 не touch submitForm (тестирование с точками останова и операторами alert()). Все остальные нокаутирующие привязки по-прежнему работают.

пожалуйста помоги. Благодарю.

<html>
<head>
<script src="/Content/Scripts/jquery-1.10.2.js"></script>
<script src="/Content/Scripts/jquery-ui/jquery-ui.js"></script>
<script src="/Content/Scripts/jquery-ui-timepicker-addon.js"></script>
<script src="/Content/Scripts/knockout-2.3.0.js"></script>
<script src="/Content/Scripts/knockout-helpers.js"></script>
<script src="/Content/Scripts/knockout.mapping-latest.js"></script>
<script src="/Content/Scripts/underscore.js"></script>
<script src="/Content/Scripts/date.js"></script>
<script src="/Content/Scripts/global.js"></script>
<script src="/Content/Scripts/jquery.blockUI.js"></script>
<script src="/Content/Scripts/jquery.dirtyform.js"></script>
<script src="/Content/Scripts/bootstrap/bootstrap.js"></script>
<script src="/Content/Scripts/sessionTimer.js"></script>
<script src="/Content/Scripts/jquery.livequery.js"></script>



<script src="/Content/Scripts/Ecdm/myCode.js"></script>




</head>


<form action="/Apply" data-bind="submit: submitForm" id="myApplicationForm"         method="post">

<!-- html form stuff -->

</form>
<script>

    var view; 

        $(function() {


        view = new ModelView({
                formSelector: '#myForm',
    });

  // Base JS model
        var model =
            {                
                someProperty: '@Model.SomeProperty',
};


view.bind(model);


});


</script>

</html>

мой код.js:

function ModelView(params) {

    var self = this;

  // Default parameters
    var args = $.extend({
    formSelector: 'form'    }, params);

   this.bind = function (model) {
  // Apply KO bindings
    ko.applyBindings(self);
    };


    this.submitForm = function () {
    var form = $(args.formSelector);
    form.validate();
    if (form.valid()) {
        var referenceNumber = $('#ReferenceNumber');

        if (a==b) {

            showConfirmation();

            return false;
        }

        g_showWait("Please wait...");
        return true;
    }

    return false;
}

}

  • Боюсь, типичная задача для отладки бинарного поиска... 18.10.2013
  • спасибо за предложение @Jeroen. это было все, что я мог сделать без сообщений об ошибках. Мне удалось отследить это, чтобы переопределить ненавязчивую проверку jquery, как в этом blog ... Я пробовал нокаутирующую привязку до и после переопределения. Я могу изменить другие настройки, такие как errorContainer, errorElement... но если я коснусь errorPlacement, привязка просто не сработает... какие-нибудь другие предложения? 22.10.2013

Ответы:


1

Я решил это, используя нотацию объявления проверки, а не напрямую устанавливая настройки валидатора, но я не знаю, почему. Если бы кто-нибудь мог объяснить, я был бы признателен (мне надоело на это смотреть :)) errorPlacement был успешно переопределен и работал в обоих случаях. отправить нокаутную привязку просто не сработало.

Вместо переопределения функции errorPlacement, подобной этой

$("form").each(function() {        
        var validator = $(this).data('validator');
        if (typeof validator != 'undefined') {
            validator.settings.errorPlacement = $.proxy(function(error, inputElement) {
                //
                // do stuff with the error object
                //
             }, $(this));
         }
 });

Я изменил его на это, просто попробуйте что-нибудь, и это сработало:

$("form").each(function () {
    var validator = $(this).data('validator');
    if (typeof validator != 'undefined') {
        $(this).validate({
            errorPlacement: $.proxy(function (error, inputElement) {
                //
                // do stuff with the error object
                //
             }, $(this));
         }
 });
23.10.2013
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]