【问题标题】:Bootstrap How-to: checkbox should change text input value when selected/checked [closed]Bootstrap How-to:复选框应在选中/选中时更改文本输入值[关闭]
【发布时间】:2016-01-16 04:48:29
【问题描述】:

我刚开始使用 HTML/CSS/JavaScript,在测试 Bootstrap 时遇到了一个(希望如此)小障碍。

我的代码:

<div class="form-group">
    <div class="col-sm-2">
        <input type="text" class="form-control" id="text1" name="text1" value="Initial Value" readonly>
    </div>
    <div class="checkbox col-sm-10">
        <label>
            <input type="checkbox" id="checkbox" data-toggle="collapse" data-target="#collapse3rdParty"
                   aria-expanded="false" aria-controls="collapse3rdParty">
            Select to change value
        </label>
    </div>
</div>

<div class="collapse" id="collapse3rdParty">
    <div class="form-group form-group-lowermargin">
        <div class="col-sm-offset-2 col-sm-10">
            <input type="text" class="form-control" id="inputName" name="inputName" placeholder="Name">
        </div>
    </div>
</div>

现场演示也在JSFiddle

我已经设法实现的是在选中复选框时“折叠”一个输入字段。

我找不到有关如何使同一个复选框更改只读文本输入的值的任何信息(或者我没有得到它)​​。

默认情况下,即在加载页面时,它应该有一个初始值。当复选框被选中时,文本输入的值应该被改变(例如,将 'value="Initial Value"' 更改为 'value="New Value"')。

这是否可能无需使用 JavaScript?

非常感谢任何有关如何执行此操作的帮助(通过 CSS 或 JS);-)

【问题讨论】:

  • 那么当有人在另一个框中键入内容时,您是否希望该框的值发生变化?
  • 类似这样的东西:jsfiddle.net/sandenay/shaw2ep6/2
  • @Yvette:我会记住这一点,感谢您的澄清。 Ryan 已经回答了问题(我已经标记了有效的解决方案)。

标签: javascript html css twitter-bootstrap checkbox


【解决方案1】:

您需要使用 javascript。你可以这样做:

document.getElementById('checkbox').onchange = function()  {
  document.getElementById('inputName').setAttribute('placeholder', this.checked ? 'new name' : 'name') 
}

https://jsfiddle.net/d0fyxg8e/


jQuery 版本:

$('#checkbox').change(function() {
  $('#inputName').attr('placeholder', this.checked ? 'new name' : 'name') 
})

https://jsfiddle.net/594s2mtf/

【讨论】:

    【解决方案2】:

    没有 JavaScript 就无法更改文本输入的值。以下使用 jQuery 框架,而不是 @Lg102 使用纯 JavaScript 的解决方案。

    这将改变输入字段一次:

    $('#checkbox').on('change', function(){
        if (this.checked) {
            $('#text1').val('New value');
        }
    });
    

    这将根据复选框是否被选中在初始值和新值之间切换:

    $('#checkbox').on('change', function(){
        if (this.checked) {
            $('#text1').val('New value');
        } else {
            $('#text1').val('Initial value');
        }
    });
    

    【讨论】:

    • 哇,你们所有人,你们太棒了 ;-) 我已经使用了带有 if/else 子句的切换脚本,它就像一个魅力,完全符合预期 - 完美!
    【解决方案3】:

    可以在 CSS 中通过使用:checked 选择器并结合~ 来完成,但前提是该字段 DOM 中的复选框之后,所以我不会推荐它。

    在(普通的,没有 jQuery)JavaScript 中:

    var initial = document.getElementById('text1'),
        checkbox = document.getElementById('checkbox');
    
    checkbox.addEventListener('change', function(){
        initial.value = this.checked ? 'CHECKED' : 'NOT CHECKED'; 
    });
    

    【讨论】:

    • 感谢您的回答,尽管我使用的是 @Ryan 的 if/else jQuery 版本,但它的工作方式应有尽有 - 仍然,干得好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2012-03-31
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 2015-11-20
    相关资源
    最近更新 更多