Изменить текстовую метку там, где внутри есть элемент ввода флажок
У меня есть эта часть HTML в моей форме:
<label class="ideal-radiocheck-label" onclick="">
<input id="pagamento_8" class="_input " type="checkbox" onclick="half(this,value);" checked="" value="980" name="pagamento[]" style="position: absolute; left: -9999px;" autocomplete="off">
<span class="ideal-check checked"></span>
988 (980-980 €)
</label>
Это кнопка ввода флажка, которая вызывает функцию half(), чтобы вызвать что-то вроде вызова следующей функции:
function setClickedLabel(clicked,new_value){
label_e=$(clicked).parent();
label_t=$(label_e).text();
labels_t=label_t.split('-');
$(label_e).html(labels_t[0]+'-'+new_value+' €)'); <-- 1
//$(label_e).text(labels_t[0]+'-'+new_value+' €)'); <-- 2
//$(label_e).innerHTML = labels_t[0]+'-'+new_value+' €)'; <-- 3
}
Здесь я бы изменил часть метки "988 (980-980 €)" (последние 980), а переменная "clicked" - это входной объект, который вы можете видеть внутри элемента метки.
Используя один из трех описанных методов, я получил 2 эффекта. Whit 1,2 изменяет метку, но удаляет элемент ввода. Если 3, это ничего не значит.
Какую функцию я могу использовать? Как я должен исправить код, чтобы получить то, что мне нужно? HTML не может быть изменен.
Может быть, другая альтернатива без добавления.
TNX, J.
1 ответ
Адаптация сценария на jsfindle оставила комментарий от adeneo. Я написал это решение. Может быть, могут быть другие лучшие решения.
function setClickedLabel(clicked,new_value,old_value){
label = $(clicked).parent().contents().filter(function() {
return this.nodeType === 3 && this.nodeValue.trim().length;
}).get(0);
label.nodeValue = label.nodeValue.replace(new RegExp("-"+old_value), "-"+new_value);
}