更改文本标签,其中有一个输入复选框元素

时间:2013-10-28 12:58:13

标签: javascript jquery html label innerhtml

我的表单上有这部分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它会更改标签,但会删除输入元素。 Whit 3它什么都没做。

我可以使用什么功能?我如何修复代码以获得我需要的东西? Html无法更改。

可能是另一种没有appending的替代方案。

TNX, 学家

1 个答案:

答案 0 :(得分:0)

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);
}