Я использую плагин JQuery Form , плагин проверки JQuery и плагин jqTransform.
У меня есть скрытая форма, которую я делаю видимой, чтобы добавлять или редактировать вещи. Действия редактирования или добавления вызывают следующий вызов функции.
function activateAddForm(formId,callback) {
$('#'+formId).jqTransform().validate({
submitHandler: function(form) {
$(form).ajaxSubmit( {
dataType: "json",
success: function(json) {
callback(json);
}
});
}
});
}
Каждый звонок с разными параметрами. Для добавления я называю это с
activateAddForm('add-new-form',addToy);
для редактирования, я называю это
activateAddForm('add-new-form',editToy);
Вот что происходит:
- Перезагрузить страницу.
- Редактировать одну игрушку.
- Отправьте форму.
- вызывается функция editToy.
- Попробуйте добавить что-нибудь.
- Функция activAddForm вызывается с addToy в качестве обратного вызова, но после отправки формы вызывается функция editToy.
Если первое, что я сделаю после перезагрузки, это добавлю игрушку. Тогда функция addToy всегда вызывается.
Я попытался добавить:
function activateAddForm(formId,callback) {
$('#'+formId).ajaxFormUnbind();
...
}
или
function activateAddForm(formId,callback) {
$('#'+formId).resetForm();
...
}
Но это не работает. Есть идеи, что я могу сделать?
Обходные испытания
Activa предлагает добавить строку:
$.removeData($('#'+formId)[0],'validator');
function activateAddForm(formId,callback) {
$('#'+formId).jqTransform();
$.removeData($('#'+formId)[0],'validator');
$('#'+formId).validate({
submitHandler: function(form) {
$(form).ajaxSubmit( {
dataType: "json",
success: function(json) {
callback(json);
}
});
}
});
}
Следит за следующим:
- Перезагрузите страницу.
- Редактировать одну игрушку.
- Отправьте форму.
- Вызывается функция editToy.
- Попробуйте добавить что-нибудь.
- Вызывается функция editToy, затем вызывается функция добавления.
Вышеуказанное исправление не работает, но, кажется, в правильном направлении.
Есть еще идеи?