【问题标题】:Change input form when checkbox is pressed按下复选框时更改输入表单
【发布时间】:2017-03-20 13:17:08
【问题描述】:

我想创建一个网络表单,让用户有机会更轻松地创建工单。

在这个网络表单中,我有两个输入表单和一个复选框:

我想要的是以下内容(通过 PowerPoint 创建):

因此,如果用户单击复选框,网络表单应自动禁用第二个输入表单并复制第一个输入表单的值和/或占位符。简而言之:如果用户单击复选框,则第二个输入表单应该与第一个输入表单完全相同,只是它被禁用。

不幸的是,我不知道该怎么做。现在我的代码如下所示:

输入字段1(关键用户)+复选框:

<div class="form-group">
<label class="control-label col-sm-2" for="keyuser">Key-User:</label>
<div class="col-sm-10"> 
  <input type="keyuser" class="form-control" id="keyuser" placeholder="Username Key-User">

  <div class="checkbox">
    <label onclick="checkbox()">
        <input type="checkbox">
    </label>Is the affected user
  </div>
</div>

输入字段 2(受影响的用户):

  <div class="form-group">
<label class="control-label col-sm-2" for="affuser">Affected User:</label>
<div class="col-sm-10"> 
  <input type="affuser" class="form-control" id="affuser" placeholder="Username affected user">
</div>

Checkbox() [它现在根本不起作用]:

function checkbox() {
"use strict";
if (check === "False") {
    check = "True";
    $('#affuser').attr('placeholder', 'Username Key-User');

} else {
    check = "False";
    $('#affuser').attr('placeholder', 'Username affected user');
}

}

如何实现上述功能?

【问题讨论】:

  • 您的支票不应该是布尔值而不是字符串吗?

标签: javascript jquery forms checkbox


【解决方案1】:

我想立即对您的脚本实施一些更改:

  • 不要使用内联 JS。相反,为复选框(而不是标签元素)创建一个 onchange 事件处理程序
  • 为您的复选框使用 ID,以便您的 &lt;label&gt; 将在功能上附加到它。

对于 JS,这很简单:当在 checkbox 元素上注册了 onchange 事件时,通过简单地评估 .is(':checked') 布尔值来评估它是否被选中:

  • 如果选中:
    • 使用.prop('disabled', true) 禁用#affuser 元素
    • 使用.attr('placeholder', ...)更新占位符属性
  • 如果未选中:
    • 使用.prop('disabled', false)启用上述元素
    • 再次使用.attr('placeholder', ...) 更新占位符属性

$(function() {
  $('#checkbox1').on('change', function() {
    if($(this).is(':checked')) {
      $('#affuser')
        .prop('disabled', true)
        .attr('placeholder', $('#keyuser').attr('placeholder'));
    } else {
      $('#affuser')
        .prop('disabled', false)
        .attr('placeholder', 'Username affected user');
    }
  });
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group">
  <label class="control-label col-sm-2" for="keyuser">Key-User:</label>
  <div class="col-sm-10">
    <input type="keyuser" class="form-control" id="keyuser" placeholder="Username Key-User">

    <div class="checkbox">
      <label for="checkbox1">
        <input type="checkbox" id="checkbox1">
    </label>Is the affected user
    </div>
  </div>
</div>
<div class="form-group">
  <label class="control-label col-sm-2" for="affuser">Affected User:</label>
  <div class="col-sm-10">
    <input type="affuser" class="form-control" id="affuser" placeholder="Username affected user">
  </div>
</div>

【讨论】:

  • 非常感谢。禁用功能现在工作得很好,但是我如何实现该功能,以便在单击复选框时自动将“keyuser”的值/占位符复制到“affuser”?
  • @TimKühn 如果需要,只需读取 keyuser 输入的占位符属性值并分配它,即$('#affuser').attr('placeholder', $('#keyuser').attr('placeholder'))。我已经更新了答案以反映这一点;)
猜你喜欢
  • 2020-01-20
  • 2019-12-25
  • 2020-04-01
  • 2023-03-12
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多