2013-05-15 2 views
0

Dev Gurus: Вам нужна помощь. У меня есть файл внешних .js, который имеет следующую функцию:Требуется JavaScript и JQuery с Telerik

function bindDates(effDate, endDate, attrType) { 
    //Declare variables to be used in the JavaScript Function 
    var effDateID = effDate.get_id(); 
    var endDateID = endDate.get_id(); 
    var tmp = attrType; 

    //RBD THIS IS KEY TO THE DATEPICKER BOXES>>>>>>>> THIS IS THE KEY -------------  TRY TO BREAK UP>>>>>>>>> 
    //$(effDate.get_element()).on('validDateEntered', { effID: effDateID, endID: endDateID, type: tmp }, function (evt) { 
    // setEffectiveDates($find(evt.data.effID), $find(evt.data.endID), evt.data.type); 
    //}); 

    $(effDate.get_element()).on('validDateEntered', { effID: effDateID, endID: endDateID, type: tmp }, function (evt) { 
     setEffectiveDates($find(evt.data.effID), $find(evt.data.endID), evt.data.type); 
    }); 

    effDate.add_dateSelected(function (sender, args) { 
     validateDatesRange(effDate, endDate); 
    }); 

    effDate.get_dateInput().add_blur(function (sender, args) { 
     validateDatesRange(effDate, endDate); 
    }); 

    //$(endDate.get_element()).on('validDateEntered', { effID: effDateID, endID: endDateID, type: tmp }, function (evt) { 
    // setEffectiveDates($find(evt.data.effID), $find(evt.data.endID), evt.data.type); 
    //}); 

    endDate.add_dateSelected(function (sender, args) { 
     validateDatesRange(effDate, endDate); 
    }); 

    endDate.get_dateInput().add_blur(function (sender, args) { 
     validateDatesRange(effDate, endDate); 
    }); 
} 

Нужна помощь в понимании следующей

$(effDate.get_element()).on('validDateEntered', { effID: effDateID, endID: endDateID, type: tmp }, function (evt) { 
    setEffectiveDates($find(evt.data.effID), $find(evt.data.endID), evt.data.type); 
}); 

Я не уверен, что означает «validDateEntered». это код, над которым я работаю от прошлого разработчика. Кажется, что происходит то, что дата будет установлена, если она действительна, но мне нужно, чтобы она установила NO MATTER WHAT.

Добавить позже:

function validateDatesRange(effDateCtrl, endDateCtrl) { 
    var result = true, 
     effDate = effDateCtrl.get_selectedDate(), 
     endDate = endDateCtrl.get_selectedDate(), 
     cell = $(effDateCtrl.get_element()).parents('td').first(); 

    if (effDate && endDate) { 
     if (effDate > endDate) { 
      var div = "<div class='errorMessage' style='display:none;'>Effective date must be less than end date.</div>"; 
      $(div).prependTo(cell).fadeIn(); 
      result = false; 
     } 
    } 

    if (result) { 
     cell.find('div.errorMessage').fadeOut(200, null, function() { $(this).remove(); }); 
     $(effDateCtrl.get_element()).trigger('validDateEntered'); 
    } 
    return result; 
} 

При загрузке страницы будет заполнить несколько сеток. В сетках есть кнопка редактирования. Когда вы нажимаете кнопку редактирования, панель отображает и показывает элементы управления effDate и endDate.

Эффект заполняется, когда вы нажимаете кнопку редактирования один раз, но endDate нет. Если вы снова нажмете кнопку редактирования, элемент управления EndDate будет заполнен. Мне нужно, чтобы они были заполнены одним и тем же кликом. Я чувствую себя глупым, потому что не могу уловить проблему. Хотелось бы, чтобы я мог захватить событие редактирования, но даже не вижу его в сетке. Спасибо заранее.

+0

Чтение следующее, но все еще не понимаю ... http://api.jquery.com/on/#on-events-selector-data-handlereventObject – Moojjoo

ответ

0

«validDateEntered» - это настраиваемое событие. Вы должны найти код для .trigger('validDateEntered');, так как это станет источником события. Это даст вам представление о том, как инициировать событие, даже если данные недействительны.

Существует некоторое обсуждение пользовательских событий здесь: http://api.jquery.com/trigger/

ОБНОВЛЕНО после OP редактирует:

Так это выглядит, как bindDates говорит, что всякий раз, когда выбрана дата или селектор даты размыто, вызовите validateDatesRange , Если даты действительны, validateDatesRange запускает пользовательское событие validDateEntered и возвращает true. Если это не так, он возвращает false без запуска события. Когда срабатывает validateDatesRange, effDate устанавливает эффективные даты.

Самый простой способ установить эффективные даты независимо, если они действительны (и, вероятно, самый безопасный способ, учитывая, что вы не понимаете, приложение еще), чтобы заменить validateDatesRange() с

function validateDatesRange(effDateCtrl, endDateCtrl) { 
    $(effDateCtrl.get_element()).trigger('validDateEntered');  
} 
+0

Спасибо. Я попробую это. – Moojjoo

+0

Существует другая функция ---- – Moojjoo

+0

функция validateDatesRange (effDateCtrl, endDateCtrl) { результат переменная = верно, effDate = effDateCtrl.get_selectedDate(), EndDate = endDateCtrl.get_selectedDate(), клеток = $ (effDateCtrl.get_element .()) родители ('тд') первый().; – Moojjoo

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