Как получить текст дочернего интервала из выбранной опции

#javascript #jquery #html #ajax

#javascript #jquery #HTML #ajax

Вопрос:

Я новичок в этом, и я пытался выяснить, как получить текст дочерней области из выбранной мной опции. Я пытаюсь получить текст из class: payment-percent и payment-flat из выбранной опции. Спасибо, вы действительно это цените.

 <div>
    <select name="payment-method">
        <option value="paypal"><span class="payment-percent">2.9</span>%   <span class="payment-flat">0.30</span></option>
        <option value="stripe"><span class="payment-percent">3.9</span>%   <span class="payment-flat">0.60</span></option>
    </select>
</div>
  

Ответ №1:

HTML-тег может не работать внутри опций. Вместо этого вы можете получить выделенный текст с помощью псевдоселектора :selected и разделить его разделителем . Это даст массив с 2 элементами. Вы можете использовать index для получения элементов

 $('#payment-method').on('change', function() {
  let selectedText = ($(this).find(":selected").text()).trim().split(' ');
  console.log(selectedText[0], selectedText[1]);


})  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <select name="payment-method" id='payment-method'>
    <option value="paypal"><span class="payment-percent">2.9</span>%   <span class="payment-flat">0.30</span></option>
    <option value="stripe"><span class="payment-percent">3.9</span>%   <span class="payment-flat">0.60</span></option>
  </select>
</div>  

Комментарии:

1. Я думаю, вам следует trim() каждое значение после split()

Ответ №2:

У меня есть ванильное решение на JavaScript (иначе без jQuery). Этого можно легко достичь. В вашем html внесите следующие изменения:

 <div>
  <select name="payment-method" id="select-payment" onChange="selectOption(this);">
    <option value="paypal"><span class="payment-percent">2.9</span>%   <span class="payment-flat">0.30</span></option>
    <option value="stripe"><span class="payment-percent">3.9</span>%   <span class="payment-flat">0.60</span></option>
   </select>
</div>
  

И в вашем файле javascript,

 function selectOption(select) {
  console.log(select.options[select.selectedIndex].text);
}
  

Ответ №3:

Если вы используете jQuery, попробуйте что-то вроде этого:

 $("select[name=payment-method] option:selected").text();
  

В vanilla.js:

 let selectbox=document.querySelector("select[name='payment-method']");
var text=selectbox.options[selectbox.selectedIndex].text;
  

Ответ №4:

Вы могли бы попробовать это:

 try {
  var selectedOption = document.getElementsById('payment-method').selectedOptions
  var value = selectedOption amp;amp; selectedOption[0].text
} catch (err) {
  console.log('Element not found')
}