Содержимое списка не отображается с функцией .val - PullRequest
3 голосов
/ 17 октября 2019

Я запускаю этот сценарий в пользовательском окне сценария некоторого программного обеспечения рабочего процесса. Я хочу, чтобы у пользователя были определенные поля скрывать или показывать в зависимости от значения списка. Этот скрипт находится на страницах после того, как пользователь выбрал значение поля списка. Так что это загружается на страницу, где заполнено поле списка. Скрипт работает - он показывает и скрывает правильные поля, НО делает выбранное значение невидимым. Поле есть, но значение пустое.

Я также пытался удалить функцию document.ready в начале. Я попытался удалить val (function () и поместить все это в оператор if.

$(document).ready(function() {
  $("#ctl00_mainContent_qtWfInstance_ctl00_ctl01_lstValues").val(function() {
    if ($(this).val() == "One") {
      $("#CustomFieldWrapper_1277_0_0").show();
      $("#CustomFieldWrapper_1303_0_0").hide();
    }
    if ($(this).val() == "Two") {
      $("#CustomFieldWrapper_1303_0_0").show();
      $("#CustomFieldWrapper_1277_0_0").hide();
    }
  });
});

Мне интересно, почему не отображается выбранное значение поля списка? Раскрывающийся список естьи поле списка может быть обновлено (его можно редактировать на следующем шаге). Оно правильно отображает и скрывает значение, выбранное на последнем шаге.

Ответы [ 3 ]

2 голосов
/ 18 октября 2019

Используйте .val(index, value) параметры по умолчанию.

РЕДАКТИРОВАТЬ: И, как предложено @BrandonHill, вернуть входное значение в конце вашей функции.

$(document).ready(function() {
    $("#ctl00_mainContent_qtWfInstance_ctl00_ctl01_lstValues").val(function(index, value) {
        if (value == "One") {
            $("#CustomFieldWrapper_1277_0_0").show();
            $("#CustomFieldWrapper_1303_0_0").hide();
        }
        if (value == "Two") {
            $("#CustomFieldWrapper_1303_0_0").show();
            $("#CustomFieldWrapper_1277_0_0").hide();
        }
      return value; // Add this line
    });
});

Причина в том, что использование .val() определяет его селектором значение, возвращаемое внутри, и если у вас нет возврата, он вернет undefined, который не будет равен One или Two в любое время.

Чтобы это работало, #ctl00_mainContent_qtWfInstance_ctl00_ctl01_lstValues должен быть вводом.

Для получения дополнительной информации вы можете прочитать Официальная документация jQuery .

1 голос
/ 17 октября 2019

Это jQuery, а не javascript. Метод .val(function) установит входное значение в возвращаемое значение функции, которое в этом случае является нулевым / неопределенным. Если вы принимаете второй аргумент в своей функции, вы можете просто вернуть его.

0 голосов
/ 21 октября 2019

Спасибо большое !!!! Теперь он показывает значение в поле, и если я изменяю значение и сохраняю рабочий процесс, он перезагружает страницу с новым значением и показывает правильные поля!

Все, что я сделал, это добавил возвращаемое значение;линия. Я не добавил (индекс, значение) Я оставил это как ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...