JQuery Как процитировать динамическую строку

0

У меня два элемента формы. Одним из них является раскрывающийся список, который динамически заполняется через вызов getJSON. Другое стандартное текстовое поле ввода.

Когда форма загружается, раскрывающийся список заполняется. Текстовое поле будет "обычно" иметь в нем значение, так как это форма утверждения.

То, что я пытаюсь сделать, - это значение в моем раскрывающемся списке, которое соответствует значению в текстовом поле, - это выбранная опция. Это работает для меня с другими раскрывающимися списками этого типа, но в этом случае я думаю, что у меня проблема с пробелами в моих раскрывающихся значениях и в моем текстовом поле.

В проблеме, которую я имею, мое текстовое поле имеет значение "Большой красный сарай". (без кавычек). Одно из значений в моем раскрывающемся списке также имеет значение "Большой красный сарай". (без кавычек) Это должно быть выбранное.

Форма:

<select name="cu_vendors" id="cu_vendors">
</select>

<input type="text" name="ven_name" id="ven_name" />

Мой раскрывающийся список заполняется просто отлично.

JQuery:

$.getJSON("get-cu-vendors.html", function(data){
  $('#cu_vendors').html('');
  if(data && data.length > 0){
    $('#cu_vendors').append("<option value='' class='red'>Required</option>");
        $.each(data, function(key, value){
        $("#cu_vendors").append("<option value=\""+$.trim(value)+"\">"+value+"</option>");                  
    });         
  }else{
   $('#cu_vendors').html('');
  }
});
 $("#cu_vendors option[value="+ $('#ven_name').val() +"]").attr('selected', 'selected');

Я получаю синтаксическую ошибку, но не то, что она есть:

Error: Syntax error, unrecognized expression: #cu_vendors option[value=Big Red Barn]

Итак, я думаю, что здесь есть пробелы. Есть ли способ в JQuery процитировать эти значения, когда я использую $ ('# ven_name'). Val() в моей последней строке выше?

Спасибо за любую помощь.

Теги:

3 ответа

1
Лучший ответ

Две вещи. Во-первых, строка, которая устанавливает выбранную опцию, должна находиться внутри обратного вызова $.getJSON или она будет выполняться до завершения вызова ajax. Во-вторых, поскольку значение в вашем селекторе имеет пробелы, это значение должно быть указано:

$.getJSON("get-cu-vendors.html", function (data) {
    $('#cu_vendors').html('');
    if (data && data.length > 0) {
        $('#cu_vendors').append("<option value='' class='red'>Required</option>");
        $.each(data, function (key, value) {
            $("#cu_vendors").append("<option value=\"" + $.trim(value) + "\">" + value + "</option>");
        });
        $("#cu_vendors option[value='" + $('#ven_name').val() + "']").attr('selected', 'selected');
    } else {
        $('#cu_vendors').html('');
    }    
});

Из вашего сообщения об ошибке видно, что ваш селектор выглядит следующим образом:

#cu_vendors option[value=Big Red Barn]

Когда это должно выглядеть так:

#cu_vendors option[value="Big Red Barn"]
  • 0
    Спасибо, Джейсон П. Вот и все. Другие ответы также были правильными, но вставка строки выбора в вызове jason сработала. Я не заметил, я положил его за пределами блока JSON. Я должен был присмотреться к другим областям, где я использовал это. Ни у одного из этих выпадающих нет пробелов, так что я думаю, что был ослеплен. Спасибо Спасибо.
0
 $("#cu_vendors option[value='"+ $('#ven_name').val() +"']")

должен сделать трюк.

Нет проблем с пробелами!

Обратите внимание на использование ": вы хотите иметь " value = "вещь с пробелами", а не "value = вещь с пробелами".

Кроме того, как уже сказал кто-то, вы можете увидеть его из сообщения об ошибке, что отсутствуют простые кавычки.

  • 0
    Благодарю. Это остановило синтаксическую ошибку, но это не установит значение в моем раскрывающемся списке, которое соответствует Big Red Barn. Будут ли пробелы в моем выпадающем списке? Возможно, мне придется пересмотреть мои значения в БД и код, чтобы использовать непустые значения в значениях, которые указаны в форме. Вздох!
  • 0
    Извините, я не учел всю вашу проблему. Кажется, вы все равно нашли решение :)
0

Я думаю, что вы пропускаете котировки вокруг селектора:

$("#cu_vendors option[value='"+ $('#ven_name').val() +"']").attr('selected', 'selected');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню