У меня есть кнопка asp.net:проверить текстовое поле, но postback сбрасывает скрытое поле?
<asp:Button ID="MainContent_ibSave" runat="server" Text="Save" />
</td>
мне нужно держать runat=server
, потому что я должен обрабатывать код позади, когда его щелкнул. Но в JQuery У меня есть это:
$("#MainContent_ibSave").click(function() {
if ($('#MainContent_txtShipToName').val().length == 0) {
$('#hErrorsExist').val("1");
$('#error').show();
}
else {
$('#hErrorsExist').val("0");
$('#error').hide();
}
В основном то, что я здесь делаю, это просто проверка, если какой-либо текст был введен в #MainContent_txtShipToName. Я хочу отправить сообщение об ошибке, если ничего не введено. Для этого я думал, что я хотел бы добавить скрытое поле:
<input id="hErrorsExist" type="hidden" />
Для поддержания состояния, существует ли ошибка на странице или нет. Это так, если в форме существует ошибка. Я могу установить значение в 1, иначе я установил значение 0.
После того, как я нажму на эту кнопку, она установит значение в 1, показывает #error (это просто div), но затем div исчезает. Его как будто постбэк имеет сбросить значение hErrorsExist ...
Я даже добавил проверку в моем JQuery:
if ($('#hErrorsExist').val() == "0" || $('#hErrorsExist').val().length == 0) {
alert("about to hide");
$('#error').hide();
alert($('#hErrorsExist').val());
}
else {
$('#error').show();
alert($('#hErrorsExist').val());
}
Это первая вещь в моем документе готовой функции. Я не знаю, как справиться с этим, чтобы div #error оставался даже после того, как кнопка была отправлена обратно. Если я введу значение и он проверяет, он должен установить hErrorsExist равным 0 и скрыть div #error и сохранить div скрытым после сообщения назад.
Вот полный JQuery:
$(document).ready(function() {
/*hide message container on top*/
//alert($('#hErrorsExist').val().length);
if ($('#hErrorsExist').val() == "0" || $('#hErrorsExist').val().length == 0) {
alert("about to hide");
$('#error').hide();
alert($('#hErrorsExist').val());
}
else {
$('#error').show();
alert($('#hErrorsExist').val());
}
$("#MainContent_ibSave").click(function() {
if ($('#MainContent_txtShipToName').val().length == 0) {
$('#hErrorsExist').val("1");
alert("Setting to 1");
alert($('#hErrorsExist').val());
$('#error').show();
}
else {
$('#hErrorsExist').val("0");
alert("Setting to 0");
alert($('#hErrorsExist').val());
$('#error').hide();
}
});
});
Выполняет то же самое ... Я нажимаю кнопку «Сохранить», и оно устанавливает значение 1, dispalys сообщение об ошибке, но затем снова исчезает ... Это проблема, которую я испытываю. – oJM86o
Я думаю, что это связано с началом моего кода jquery, см. Мой пост в конце, где я перечисляю все мои jquery. Похоже, что это скрытое поле пусто после сообщения назад ... – oJM86o
обновлено :) проблема состоит в том, что кнопка asp при преобразовании преобразуется в кнопку отправки, и каждый раз, когда вы нажимаете на нее, страница повторно отправляется на сервера и вызвать обратную передачу. поэтому вы можете использовать .preventDefault(), чтобы избежать обратной передачи. – jcvegan