2016-08-25 5 views
2

Я делаю страницу в asp.net MVC. На этой странице есть элемент View and PartialView.I, который добавляет элемент в partialview и записывает Countinue Функция в виде.Как связать событие нажатия кнопки в PartialView (MVC)?

кнопка:

<button type="button" class="btn btn-warning center-block btn-large" id="Continue" onclick="Continue(this);">Continue</button> 

ЯШ:

var Continue=function (e) { 
      e.preventDefault(); 
      if ($('#FieldsetCharterFlightsReturn article').size() < 1) { 
       if (validateDeparturef(e)) { 
        $("#CharterFlightsForm").submit(); 
       } 

      } 
         if ($('#FieldsetCharterFlightsReturn article').size() > 0) { 
       if (validateDeparturef(e) && validateArrivalf(e)) { 
        $("#CharterFlightsForm").submit(); 
       } 
      } 
     }; 

Теперь, когда я нажимаю на кнопку получить эту ошибку:

TypeError: Continue is not a function

Что такое правильный способ связать событие элементов в PartialView?

+0

ли ваш правильно включили определение Continue функции на странице? Также вы передаете 'this', который будет кнопкой, и у него не будет метода под названием' preventDefault() ' – Shyju

+0

Да. Я могу удалить e.preventDefault() – programmer138200

+0

Является ли он в том же представлении? или внешний файл js? можете ли вы поставить 'console.log (« Эта функция существует »),' чуть выше определения функции, запустите свою страницу и убедитесь, что это сообщение появилось в консоли браузера. – Shyju

ответ

2

Используйте следующий шаблон:

<button type="button" class="btn btn-warning center-block btn-large" id="Continue" onclick="module.Continue(event);">Continue</button> 

(function($, module) { 

    module.Continue=function (e) { 
     e.preventDefault(); 
     if ($('#FieldsetCharterFlightsReturn article').size() < 1) { 
      if (validateDeparturef(e)) { 
       $("#CharterFlightsForm").submit(); 
      } 

     } 
     if ($('#FieldsetCharterFlightsReturn article').size() > 0) { 
      if (validateDeparturef(e) && validateArrivalf(e)) { 
       $("#CharterFlightsForm").submit(); 
      } 
     } 
    }; 

}(jQuery, module= window.module|| {})); 
+0

OK.Это работает отлично. Мерси Мохаммад :) – programmer138200

2

Поскольку вы используете связать событие, используя его вместо уродливого встроенного обработчика кликов.

$(function(){ 
    $('#Continue').on('click', Continue); 
}) 

OR, используя событие делегации

$(document).on('click', '#Continue', Continue); 

и удалить INLINE onclick="Continue(event);" обработчику

+0

OK.Если я не использую ajax for get partialveiw Это работает в настоящее время. Hove когда-либо я нашел другой способ, который заменяет тег кнопки тегом и удаляет функцию preventDefault(). Таким образом, я могу использовать встроенный код и эту работу всегда. Спасибо большое :) – programmer138200

 Смежные вопросы

  • Нет связанных вопросов^_^