В моей функции $(document).ready()
меня есть событие .change
связанное с набором или переключателями. Если в форме, которую пользователь представляет, появляется ошибка, страница перезагружается со значениями, выбранными пользователем. Это приводит к .change
функция переключателя .change
каждый раз при загрузке страницы, что я не хочу делать. Как я могу отключить это?
РЕДАКТИРОВАТЬ
Здесь полная функция не была опубликована ранее из-за того, что в настоящий момент это был горячий беспорядок в середине и старался сохранить читабельность этого сообщения.
FYI. Если после отправки пользователем формы возникла ошибка, мне нужна страница для загрузки формы, как это было, когда пользователь нажал кнопку отправки. Поскольку мы отображаем определенный набор элементов div
и span
на основе выбора переключателя, я использовал метод trigger('change')
. Есть ли способ определить, происходит ли операция во время загрузки страницы?
$('input[name=TransactionType]').change(function (e) {
//Clear any messages from previous transaction
$('.error').text('');
$('.success').text('');
//Display fieldset Submit and Cancel(back to search) link
$('#PageDirection').show();
$('#AgentInformation').show();
//Display input fields
var radioValue = $(this);
if (radioValue.attr('id') == "Enroll" || (radioValue.attr('id') == "ModT")) {
//Enable and disable input boxes
$('span').not('#AllInput').hide();
$('#AllInput').show();
$('#PayFrequency').show();
$('#refNumberInput').show();
//Set tooltips
$('#AccountType').removeAttr("title");
if (radioValue.attr('id') == "Enroll") {
$('#PaymentFrequency').removeAttr("title");
$('.req').show();
$('#refNumberInput').show();
$('#enrollNote').show();
} else {
$('#PaperStatement').show();
$('#PaymentFrequency').attr("title", "Select the frequency to pay the distributor");
$('#refNumberInput').show();
}
} else if (radioValue.attr('id') == "New") {
$('span').not('#NewMessage').hide();
$('#NewMessage').show();
$('.req').show();
$('#refNumberInput').show();
} else if (radioValue.attr('id') == "ModA") {
$('#AllInput').show();
$('#AgentIdSpan').show();
$('.req').show();
$('#UnenrollMessage').hide();
$('#NewMessage').hide();
$('#PayFrequency').hide();
$('#PaperStatement').hide();
$('#refNumberInput').show();
$('#AgentId').attr("title", "Enter the Agent ID to be modified");
} else if (radioValue.attr('id') == "Clone") {
$('span').not('#AgentIdSpan').hide();
$('#AgentIdSpan').show();
$('.req').show();
$('#AgentId').attr("title", "Clone EFT onto this Agent ID");
} else if (radioValue.attr('id') == "Unenroll") {
$('span').not('#UnenrollMessage').hide();
$('#UnenrollMessage').show();
$('.req').show();
$('#refNumberInput').show();
}
if (radioValue.attr('id') != "Clone") {
$('.alwaysReq').show();
};
}).filter(':checked').trigger('change');
document.ready
обычно не вызывает изменение функции. Он будет вызван только в том случае, если вы вручную измените флажок или одно и то же событие под влиянием какой-либо другой функции, но не в document.ready
.
Удалите метод .trigger('change')
поскольку он вызовет метод изменения document.ready
вы можете использовать "on" или "делегировать" внутри функции jquery ready. как это:
$(document).delegate("input[name=TransactionType]","change", function(){
$('.error').text('');
$('.success').text('');
});
Если вы не заботитесь о автозаполнении, вы можете поставить autocomplete="off"
в form
. Вы также можете сравнить текущее значение поля с его значением по умолчанию, чтобы узнать, было ли оно автоматически заполнено браузером.
.change
событие для отображения определенного набораdivs
иspans
, я (думает) мне нужно использовать.trigger
метод.