选中无线电时添加必需的属性

时间:2014-08-16 12:34:02

标签: javascript required

我有一套名为' price'的无线电按钮。当''单选按钮被选中,我想专注于文本输入字段,并且应该需要该文本输入字段。 当我单击另一个选项时,应删除requried属性。

这可以通过Javascript或jQuery实现吗? 我在这里找到了一个jQuery片段,但它似乎并没有起作用。这就是我现在所拥有的:

<input type="radio" name="price" value="value" id="value_radio" onclick="document.getElementById('value_input').focus()" required>

<label for="value_input">&euro;</label>
<input type="text" name="price_value" id="value_input" pattern="\d+(,\d{1,2})?" 
    onclick="document.getElementById('value_radio').checked=true">

<script>
    $('#value_radio').change(function () {
        if($(this).is(':checked')) {
            $('#value_input').attr('required');
        } else {
            $('#value_input').removeAttr('required');
        }
    });
</script>

<input type="radio" name="price" id="free" value="free">
<label for="free">Free</label>

JSFiddle:http://jsfiddle.net/fhfrzn1d/

2 个答案:

答案 0 :(得分:4)

根据this answer,您必须监控两个无线电输入的变化。所以在第二台收音机之后移动你的javascript脚本。

还缺少)

小提琴更新:http://jsfiddle.net/fhfrzn1d/1/

$('input[name="price"]').change(function () {
    if($("#value_radio").is(':checked')) {
        $('#value_input').attr('required', true);
    } else {
        $('#value_input').removeAttr('required');
    }
});

答案 1 :(得分:2)

您的代码中有两个(实际上是三个)错误。

首先。语法无效。您应该在评论中修改@Hushme建议的右括号。

第一个(2)。你对jsfiddle的使用也是无效的。您应该将代码粘贴到网站的 JavaScript 部分,并启用jQuery库。

其次。 $('#value_input').attr('required')没有创建属性;它是 getter 。你应该在那里使用适当的setter:

$('#value_input').attr('required', true);

第三。当用户取消选择单选按钮时,无法触发单选按钮更改事件。所以你应该处理所有按钮上的事件:

$('input[name="price"]').change(function () { ... });

我已经修复了你的jsfiddle,请参阅http://jsfiddle.net/fhfrzn1d/4/

相关问题