Javascript 选中输入类型=收音机时,将类添加到输入=文本

Javascript 选中输入类型=收音机时,将类添加到输入=文本,javascript,jquery,html,Javascript,Jquery,Html,如何链接单选按钮和填充的文本输入,以便在选择单选按钮时,输入文本区域中的文本也将更改为lets say。。。红粗体 我知道逻辑是: 选中radio-A和input-text-A后,将CSS类添加到input-text-A。 取消选中时,删除类。如果选择了radio-B,请更改input-text-B,依此类推 但是现在这个简单的脚本以所有文本输入为目标 $('input[type=text]')。addClass('red') .red{ 颜色:红色; 字体大小:粗体; } A. B 执行

如何链接单选按钮和填充的文本输入,以便在选择单选按钮时,输入文本区域中的文本也将更改为lets say。。。红粗体

我知道逻辑是:
选中radio-A和input-text-A后,将CSS类添加到input-text-A。 取消选中时,删除类。如果选择了radio-B,请更改input-text-B,依此类推

但是现在这个简单的脚本以所有文本输入为目标

$('input[type=text]')。addClass('red')
.red{
颜色:红色;
字体大小:粗体;
}

A.

B
执行以下操作:

$("input[type=radio]").on("change", function(e) {
    if (e.currentTarget) {
        e.currentTarget.next("input[type=text").addClass("red");
    }
});
这样做:

$("input[type=radio]").on("change", function(e) {
    if (e.currentTarget) {
        e.currentTarget.next("input[type=text").addClass("red");
    }
});

提供您的标记,实际上不需要添加任何类或使用javascript,您可以使用纯CSS做您想要的事情:

input[type="radio"]:checked + input[type="text"] { 
    color: red; 
    font-weight: bold; 
}
至于如何使用jQuery添加类,我倾向于编写“健壮”的解决方案,这些解决方案可能要长一点,但不那么“脆弱”(意思是:如果标记稍微改变,脚本仍然可以工作)。我写这篇文章的方法(假设对标记没有控制)是使用jQuery并定位目标文本输入:

// no-conflict-save document ready shorthand
jQuery(function($) {
     // bind to the "change" event of all inputs that are radio buttons
    jQuery('input[type="radio"]').on('change', function() {
        // find the text input
        var $text_input = $(this).closest('div').find('input[type="text"]');
        // if there isn't one, get out
        if ( ! $text_input.length ) {
            return;
        }

        // if the radio button is checked, add the class
        if ($(this).is(':checked')) {
            $text_input.addClass('red');
        } else {
            // otherwise, remove the class
            $text_input.removeClass('red');
        }
    });
});
但是,如果我确实控制了标记,我会向radio input元素添加一个类,并使用该类使脚本更加“通用”有用,同时缩小绑定输入的范围(这将允许该脚本在复选框+文本输入上有效工作):


而且,老实说,如果更好地了解您的项目范围,就有可能编写一个更高效、可重复使用的脚本片段。

提供您的标记,实际上不需要添加任何类或使用javascript,您可以使用纯CSS做您想做的事情:

input[type="radio"]:checked + input[type="text"] { 
    color: red; 
    font-weight: bold; 
}
至于如何使用jQuery添加类,我倾向于编写“健壮”的解决方案,这些解决方案可能要长一点,但不那么“脆弱”(意思是:如果标记稍微改变,脚本仍然可以工作)。我写这篇文章的方法(假设对标记没有控制)是使用jQuery并定位目标文本输入:

// no-conflict-save document ready shorthand
jQuery(function($) {
     // bind to the "change" event of all inputs that are radio buttons
    jQuery('input[type="radio"]').on('change', function() {
        // find the text input
        var $text_input = $(this).closest('div').find('input[type="text"]');
        // if there isn't one, get out
        if ( ! $text_input.length ) {
            return;
        }

        // if the radio button is checked, add the class
        if ($(this).is(':checked')) {
            $text_input.addClass('red');
        } else {
            // otherwise, remove the class
            $text_input.removeClass('red');
        }
    });
});
但是,如果我确实控制了标记,我会向radio input元素添加一个类,并使用该类使脚本更加“通用”有用,同时缩小绑定输入的范围(这将允许该脚本在复选框+文本输入上有效工作):


老实说,如果更好地了解您的项目范围,就有可能编写一个更高效、可重用的脚本片段。

以下是工作代码

$('input:radio')。单击(函数(){
$('label:has(输入:radio:checked')).addClass('rightAnswer');
$('label:has(input:radio:not(:checked))).removeClass('rightAnswer');
});
.container{margin:0 auto;margin top:50px;}
.rightAnswer{字体大小:粗体;颜色:#2979FF;}
.inputswers{宽度:200px;}
.block{display:block;}
输入[type=“radio”]:选中+输入[type=“text”]{
颜色:#2979FF;
字体大小:粗体;
}

A.
B
C

这是工作代码

$('input:radio')。单击(函数(){
$('label:has(输入:radio:checked')).addClass('rightAnswer');
$('label:has(input:radio:not(:checked))).removeClass('rightAnswer');
});
.container{margin:0 auto;margin top:50px;}
.rightAnswer{字体大小:粗体;颜色:#2979FF;}
.inputswers{宽度:200px;}
.block{display:block;}
输入[type=“radio”]:选中+输入[type=“text”]{
颜色:#2979FF;
字体大小:粗体;
}

A.
B
C

更改收音机上的绑定,评估选择的收音机值,相应地调整文本输入。您可以为相应的输入文本提供一个属性,以仅影响一个文本字段。您提供的html片段有点臭,因为每个名称只有一个单选按钮。旁注-我不会将该类命名为“红色”
。。。出于某种原因,您选择了红色,以表示某种东西-将类命名为某种东西。一个类应该描述事物是什么或它的状态,然后决定处于该状态的事物的外观(在本例中为红色)。原因/状态不会更改,但应用于它的样式/颜色可能会更改。更改收音机上的绑定,评估所选的收音机值,相应地调整文本输入。您可以为相应的输入文本提供一个属性,以仅影响一个文本字段。您提供的html片段有点臭,因为每个名称只有一个单选按钮。旁注-我不会将该类命名为“红色”
。。。出于某种原因,您选择了红色,以表示某种东西-将类命名为某种东西。一个类应该描述事物是什么或它的状态,然后决定处于该状态的事物的外观(在本例中为红色)。原因/状态不会更改,但应用于它的样式/颜色可能会更改。谢谢!我只能用CSS来完成这项工作。我必须清理我的代码。起初它不起作用,因为每个收音机都放在一个单独的分区中(我这样做是为了使用Bootstrap中的“forminline”类)。谢谢!我只能用CSS来完成这项工作。我必须清理我的代码。起初它不工作,因为每个收音机都被放在一个单独的div中(我这样做是为了使用Bootstrap中的“forminline”类)