Закодированный JSON при поиске по элементам jQuery
Из PHP в браузер приходит select, в котором атрибут value каждого option содержит закодированный JSON. Одна из функций скрипта ищет внутри него option по указанному значению value, но сталкиваюсь с ошибкой jQuery:
Syntax error, unrecognized expression
Держать закодированный объект в value удобно - при отправке формы он автоматически передается на сервер. Подскажите, как можно решить проблему.
<input value="[{"key":"price"}]"/>
<select>
<option value="1">-- 1</option>
<option value="[{"key":"price"}]">-- 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="[{"key":"price"}]" />
<select>
<option value="1">-- 1</option>
<option value="[{"key":"price"}]">-- 2</option>
</select>