Я хочу использовать сериализацию формы, но исключаю кнопку и метку из сериализации.
Это версия моего JavaScript:
var saveBtn = document.getElementById("btnSaveButton");
var saveLbl = document.getElementById("lblSaveLabel");
var originalFormData = $("#MasterForm").not(saveBtn, saveLbl).serialize();
$("form :input").on('change keyup paste mouseup', function () {
var newFormData = $("#MasterForm").serialize();
if (originalFormData != newFormData) {
//some code
} else {
//some other code
}
});
См .: .not (saveBtn, saveLbl)
Это не исключает кнопку или метку.
Может кто-нибудь помочь мне и сообщить, как я могу исключить кнопку и метку из сериализации?
По сути, я переключаю дисплей с кнопки на метку и обратно в зависимости от того, внес ли пользователь какие-либо изменения в форму.
ОБНОВЛЕНИЕ ОБНОВЛЕНИЕ
Спасибо заответы ... кажется, что что-то не так ...
Возможно, здесь слишком много html для публикации ...
Использование vb.net.У меня есть главная страница, на ней есть страница с именем Admin.aspx, а внутри нее - пользовательский контроль Bundles.ascx.
В коде Bundles.ascx у меня есть этот javascript:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(prmRequest);
prm.add_endRequest(prmRequest);
function prmRequest(sender, args) {
setupFormChangeCheck("btnSaveBundle", langId);
}
В основном файле javascript у меня есть функция setupFormChangeCheck, которая выглядит следующим образом:
function setupFormChangeCheck(txtName, langId) {
try {
savebtnFnctn('dis', txtName, langId)
var originalFormData = $("#MasterForm").serialize();
$("form :input").on('change keyup paste mouseup', function () {
var newFormData = $("#MasterForm").serialize();
if (originalFormData != newFormData) {
savebtnFnctn('en', txtName, langId)
} else {
savebtnFnctn('dis', txtName, langId)
}
});
} catch (err) { }
}
В том же главном файле javascript у меня есть функция savebtnFunction, которая выглядит следующим образом:
function savebtnFnctn(event, txtName, langId) {
var saveBtn = document.getElementById(txtName);
var saveLbl = document.getElementById(txtName.replace("btn", "lbl"));
if (event == 'en') {
saveBtn.style.display = "inline";
saveLbl.style.display = "none";
} else if (event == 'dis') {
saveBtn.style.display = "none";
saveLbl.style.display = "inline";
}
}
Пользовательский элемент управления загружается динамически, поскольку на одной и той же странице есть несколько элементов управления, и если я не загружу один элемент управлениядинамически, вся нагрузка ... невероятно замедляет работу.
Динамическая загрузка пользовательского элемента управления приводит к серьезным проблемам обратной передачи.Таким образом, подавляющее большинство взаимодействий пользовательского управления обрабатываются на стороне клиента с помощью jquery.Для Bundle.ascx это делается в Bundle.js
SOOOOO ....
Когда пользовательский элемент управления загружен, запускается setupFormChangeCheck, который запускает событие dis (отключить) в функцииsavebtnFnctn.
Вот проблема, которую я заметил сегодня, когда попробовал код из предложений выше.
Когда я взаимодействую в Bundle uc, setupFormChangeCheck не запускается с самого начала.Сначала запускается эта строка $ ("form: input"). On ('change keyup paste mouseup', function ()
И что бы я ни делал, щелкаю в текстовом поле, даже не меняя ничего, приводитthis: originalFormData! = newFormData = true, а кнопка Сохранить остается активной ...
Я должен добавить, что все элементы управления в пользовательском элементе управления Bundle находятся внутри панели обновления:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
Длинное объяснение, которое я знаю, извините ... если у кого-нибудь есть идея, чтобы решить эту проблему, я буду вечно благодарен.
Спасибо. Эрик