Как выделить текст в HTML без тега - PullRequest
1 голос
/ 04 марта 2020

В настоящее время я работаю над формой пожертвования с плагином Wordpress, но у меня возникла проблема. Плагин автоматически добавляет некоторые слова и символы в ценовые опции, которые мне не нужны.

Я хочу, чтобы опции были "€ 5" "€ 10" "€ 15" "Собственный вариант".

HTML для опционов в настоящее время выглядит следующим образом:

<li>
    <label>
            <input type="radio" onchange="mollie_forms_recurring_methods_624();mollie_forms_624_totals();" data-frequency="months" data-freq="iedere maanden" data-pricetype="fixed" data-price="10.00" data-vat="" name="rfmp_priceoptions_624" value="1"> 
                                / (€ 10,00 iedere maanden)
     </label>
</li>

Как вы можете видеть, он добавляет слова типа "iedere maanden" и "()" вне цен. Я уже нашел код javascript, который удалил или заменил эти слова, но он также удалил вход Радио внутри ярлыка, который должен остаться для того, чтобы форма пожертвования работала.

Код Jquery, который Я использовал для замены слов, но также удалил ввод:

$('.donate-box ul li label:not(input)').text(function(i,t){
    return t.replace("iedere maanden", " ");
});

Я не могу действительно отредактировать HTML плагина, потому что он будет сброшен при обновлении плагина.

Как я могу выбрать только текст / слова внутри метки без удаления / редактирования поля ввода?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Проблема, с которой вы столкнулись, заключается в том, что вам нужно изменить узел, а не текстовое содержимое объекта Element.

Чтобы достичь этого, вам нужно l oop над каждым label и получить его contents(). Учитывая вашу структуру HTML, вы можете получить последний узел в контенте и использовать регулярное выражение для удаления любых символов, которые не имеют отношения к цене, которую вы хотите отобразить. Попробуйте это:

$('li label').each(function() {
  var node = $(this).contents().last()[0];
  node.textContent = node.textContent.replace(/[^€\d\,]/g, '');      
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li>
    <label>
      <input type="radio" onchange="mollie_forms_recurring_methods_624();mollie_forms_624_totals();" data-frequency="months" data-freq="iedere maanden" data-pricetype="fixed" data-price="10.00" data-vat="" name="rfmp_priceoptions_624" value="1"> 
      / (€ 5,00 iedere maanden)
    </label>
  </li>
  <li>
    <label>
      <input type="radio" onchange="mollie_forms_recurring_methods_624();mollie_forms_624_totals();" data-frequency="months" data-freq="iedere maanden" data-pricetype="fixed" data-price="10.00" data-vat="" name="rfmp_priceoptions_624" value="1"> 
      / (€ 10,00 iedere maanden)
    </label>
  </li>
  <li>
    <label>
      <input type="radio" onchange="mollie_forms_recurring_methods_624();mollie_forms_624_totals();" data-frequency="months" data-freq="iedere maanden" data-pricetype="fixed" data-price="10.00" data-vat="" name="rfmp_priceoptions_624" value="1"> 
      / (€ 250,00 iedere maanden)
    </label>
  </li>
</ul>
0 голосов
/ 04 марта 2020

Вы могли бы быть более точным c со строкой, которую нужно заменить, чтобы избежать путаницы с тем, что находится в радиоэлементе With replace ("iedere maanden)", "")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...