Экранирование в JavaScript

115
19 августа 2021, 04:00

Вот пока не сэкранировал таким образом currency:"+'"RUB"'+", скрипт не передавал в обработку другому скрипту реализацию от тега <a>.
В документации к скрипту прописано просто currency:'RUB'.
Перепробовал кучу экранирований. И так '", и так "", и эдак'', и пришёл к своему варианту через конкатенацию, лишь она сработала. Неужели более оптимального экранирования для данной ситуации нет?
(Как-то, на мой взгляд громоздко всё это выглядит)
Error - при нажатии "Оплатить", это уже результат правильной сработки скрипта, не берите его в оборот.

function Change_value() { 
 
		var x = document.getElementById("item_select"); 
     
    		if (x.value == 'first_price') { 
			document.getElementById('Output').innerHTML = "<input name='sum' required='required' size='64' type='text' value='11000' class='input_field' readonly='readonly' style='background-color:#e0e0e0; color:#666666;'><br><br><a class='btn btn-xs btn-outline btn-primary' onclick='ipayCheckout({    amount:11000,    currency:"+'"RUB"'+",    order_number:0,    description:0 },    function(order) { showSuccessfulPurchase(order) },    function(order) { showFailurefulPurchase(order) })'>Оплатить</a>"; 
			//alert("x= "+x.value); 
		} 
     
if (x.value == 'second_price') { 
			document.getElementById('Output').innerHTML = "<input name='sum' required='required' size='64' type='text' value='20200' class='input_field' readonly='readonly' style='background-color:#e0e0e0; color:#666666;'><br><br><a class='btn btn-xs btn-outline btn-primary' onclick='ipayCheckout({    amount:20200,    currency:"+'"RUB"'+",    order_number:0,    description:0 },    function(order) { showSuccessfulPurchase(order) },    function(order) { showFailurefulPurchase(order) })'>Оплатить</a>"; 
			//alert("x= "+x.value); 
		}     
 
if (x.value == 'third_price') { 
			document.getElementById('Output').innerHTML = "<input name='sum' required='required' size='64' type='text' value='50400' class='input_field' readonly='readonly' style='background-color:#e0e0e0; color:#666666;'><br><br><a class='btn btn-xs btn-outline btn-primary' onclick='ipayCheckout({    amount:50400,    currency:"+'"RUB"'+",    order_number:0,    description:0 },    function(order) { showSuccessfulPurchase(order) },    function(order) { showFailurefulPurchase(order) })'>Оплатить</a>"; 
			//alert("x= "+x.value); 
		}    
 
 
	} 
  
  <form>Выберите услугу для оплаты<span style="color: red;">*</span><br /> 
<select required id="item_select" class="input_field" style="width: 308px;" onchange="Change_value()"> 
<option value="null" style="color: #000000;">выберите услугу для оплаты</option> 
<option value="first_price" style="color: #000000;">первый ценник</option> 
<option value="second_price" style="color: #000000;">второй ценник</option> 
<option value="third_price" style="color: #000000;">третий ценник</option> 
</select> 
<br><br> 
 
   
  <div id="Output" style="display: inline;"> 
<input name="sum" readonly required="required" size="64" value="0" class="input_field" style="background-color: #e0e0e0; color: #666666;" type="text" /></div> 
 
</form>

Answer 1

В данной ситуации, можно написать \"RUB\" вместо "+'"RUB"'+"

function Change_value() { 
 
		var x = document.getElementById("item_select"); 
     
    		if (x.value == 'first_price') { 
			document.getElementById('Output').innerHTML = "<input name='sum' required='required' size='64' type='text' value='11000' class='input_field' readonly='readonly' style='background-color:#e0e0e0; color:#666666;'><br><br><a class='btn btn-xs btn-outline btn-primary' onclick='ipayCheckout({    amount:11000,    currency:\"RUB\",    order_number:0,    description:0 },    function(order) { showSuccessfulPurchase(order) },    function(order) { showFailurefulPurchase(order) })'>Оплатить</a>"; 
			//alert("x= "+x.value); 
		} 
     
if (x.value == 'second_price') { 
			document.getElementById('Output').innerHTML = "<input name='sum' required='required' size='64' type='text' value='20200' class='input_field' readonly='readonly' style='background-color:#e0e0e0; color:#666666;'><br><br><a class='btn btn-xs btn-outline btn-primary' onclick='ipayCheckout({    amount:20200,    currency:\"RUB\",    order_number:0,    description:0 },    function(order) { showSuccessfulPurchase(order) },    function(order) { showFailurefulPurchase(order) })'>Оплатить</a>"; 
			//alert("x= "+x.value); 
		}     
 
if (x.value == 'third_price') { 
			document.getElementById('Output').innerHTML = "<input name='sum' required='required' size='64' type='text' value='50400' class='input_field' readonly='readonly' style='background-color:#e0e0e0; color:#666666;'><br><br><a class='btn btn-xs btn-outline btn-primary' onclick='ipayCheckout({    amount:50400,    currency:\"RUB\",    order_number:0,    description:0 },    function(order) { showSuccessfulPurchase(order) },    function(order) { showFailurefulPurchase(order) })'>Оплатить</a>"; 
			//alert("x= "+x.value); 
		}    
 
 
	} 
  
  <form>Выберите услугу для оплаты<span style="color: red;">*</span><br /> 
<select required id="item_select" class="input_field" style="width: 308px;" onchange="Change_value()"> 
<option value="null" style="color: #000000;">выберите услугу для оплаты</option> 
<option value="first_price" style="color: #000000;">первый ценник</option> 
<option value="second_price" style="color: #000000;">второй ценник</option> 
<option value="third_price" style="color: #000000;">третий ценник</option> 
</select> 
<br><br> 
 
   
  <div id="Output" style="display: inline;"> 
<input name="sum" readonly required="required" size="64" value="0" class="input_field" style="background-color: #e0e0e0; color: #666666;" type="text" /></div> 
 
</form>

READ ALSO
ошибка разбора входных данных

ошибка разбора входных данных

отправляю post запрос

118
Laravel вывести {&ldquo;message&rdquo;:&ldquo;Unauthenticated.&rdquo;}

Laravel вывести {“message”:“Unauthenticated.”}

Как вывести сообщение на экран? в консоле выводит

158
Яндекс.Поделиться и код WP

Яндекс.Поделиться и код WP

Друзья, помогите решить проблемуХочу чтобы при нажатии кнопок Яндекс

228
Передать переменную из php в ajax, и после из ajax в php

Передать переменную из php в ajax, и после из ajax в php

Есть три файла load_messagesphp (вывод сообщений) , chat

170