Закодированный JSON при поиске по элементам jQuery

Из PHP в браузер приходит select, в котором атрибут value каждого option содержит закодированный JSON. Одна из функций скрипта ищет внутри него option по указанному значению value, но сталкиваюсь с ошибкой jQuery:

Syntax error, unrecognized expression

Держать закодированный объект в value удобно - при отправке формы он автоматически передается на сервер. Подскажите, как можно решить проблему.

<input value="[{&quot;key&quot;:&quot;price&quot;}]"/>

<select>
  <option value="1">-- 1</option>
  <option value="[{&quot;key&quot;:&quot;price&quot;}]">-- 2</option>
</select>

jQuery(document).ready(function() {
  var value = jQuery('input').val();
  var result = jQuery('option[value="' + value + '"]').text();
  
  alert(result);
});

https://jsfiddle.net/g5fo8wpa/


Ответы (1 шт):

Автор решения: Vladimir

Все дело в кавычках, просто экранируйте их replace(/"/g, '\\"')

$(document).ready(function() {
  var value = $('input').val().replace(/"/g, '\\"');
  var result = $('option[value="' + value + '"]').text();
  alert(result);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input value="[{&quot;key&quot;:&quot;price&quot;}]" />

<select>
  <option value="1">-- 1</option>
  <option value="[{&quot;key&quot;:&quot;price&quot;}]">-- 2</option>
</select>

→ Ссылка