У меня возникла проблема после использования JQuery.
Я использую VS 2013, asp.net, VB.
У меня есть панель на странице, которая показывает, когда строка выбирается из gridview. Он содержит несколько текстовых полей, а также раскрывающийся список. У меня есть сценарий jquery, который скрывает/показывает текстовые поля на странице в зависимости от того, что выбрано в раскрывающемся списке. Код ниже.
<script>
function jScript() {
$('#LowerText').hide();
$('#UpperText').hide();
$('#min').hide();
$('#max').hide();
$('#CommentsText').hide();
$('#ChangeStatusPnl').css({ "height": "200px" })
$('#AssetStatusChoice').change(function () {
if ($('#AssetStatusChoice').val() == "Fully Available")
{
$('#CommentsText').hide();
$('#LowerText').hide();
$('#UpperText').hide();
$('#min').hide();
$('#max').hide();
$('#ChangeStatusPnl').css({ "height": "200px" })
}
if ($('#AssetStatusChoice').val() == "Restricted")
{
$('#LowerText').show();
$('#UpperText').show();
$('#CommentsText').show();
$('#min').show();
$('#max').show();
$('#ChangeStatusPnl').css({ "height": "340px" })
}
if ($('#AssetStatusChoice').val() == "Unavailable")
{
$('#LowerText').hide();
$('#UpperText').hide();
$('#min').hide();
$('#max').hide();
$('#CommentsText').show();
$('#ChangeStatusPnl').css({ "height": "280px" })
}
});
};
</script>
Это прекрасно работает.
Когда пользователь нажимает кнопку фиксации на панели, данные, введенные в текстовые поля, сохраняются в базе данных MS SQL. Я добавил код для каждого текстового поля, чтобы проверить, что добавлено к нему (поэтому его не пустые или есть буквы, где должны быть номера). Пример этого кода показан ниже. Он изменяет цвет границы, если есть ошибка. Кроме того, я добавил строку кода, чтобы остановить эксплойт хранимой процедуры SQL, если есть проблема проверки.
Dim isValid As Boolean
isValid = True
Dim intValidate As Integer
If Not Integer.TryParse(TimeTextHrs.Text, intValidate) Or TimeTextHrs.Text = "" Then
AssetPopUp.Show()
TimeTextHrs.BorderColor = Drawing.Color.Red
isValid = False
End If
Моя проблема заключается в том, что пользователь нажимает на фиксацию внутри панели, поля, которые теперь видны из-за того, что было выбрано в раскрывающемся списке, исчезают, как будто он перезагружает панель. Мне нужно, чтобы они оставались видимыми. Если вы посмотрите на JQuery выше, вы увидите, когда выбран ограниченный список из раскрывающегося списка 3 текстовых полей. Когда пользователь нажимает commit, они исчезают.
Надеюсь, что все имеет смысл.
При загрузке страницы вам нужно будет запустить несколько js, чтобы установить видимость.
Вы также должны рассмотреть возможность реорганизации этой логики, чтобы она была более удобной.
$(function() {
if ($('#AssetStatusChoice').val() == "Fully Available")
{
$('#CommentsText').hide();
$('#LowerText').hide();
$('#UpperText').hide();
$('#min').hide();
$('#max').hide();
$('#ChangeStatusPnl').css({ "height": "200px" })
}
if ($('#AssetStatusChoice').val() == "Restricted")
{
$('#LowerText').show();
$('#UpperText').show();
$('#CommentsText').show();
$('#min').show();
$('#max').show();
$('#ChangeStatusPnl').css({ "height": "340px" })
}
if ($('#AssetStatusChoice').val() == "Unavailable")
{
$('#LowerText').hide();
$('#UpperText').hide();
$('#min').hide();
$('#max').hide();
$('#CommentsText').show();
$('#ChangeStatusPnl').css({ "height": "280px" })
}
});