【问题标题】:Additional input fields when filling up previous填写上一个时的附加输入字段
【发布时间】:2017-04-27 15:11:51
【问题描述】:

我正在尝试添加其他字段,以防我的用户填写了一组输入。所以这个想法是,当他完成填充该组中的最后一个输入时,另一组相同类型的项目的输入折叠/出现在现有的输入下。一组项目由三个输入组成。在填满那个之后,另一组输入将出现在下面。我将在下面展示我的代码。希望有人可以帮助我!

<div class="new-providers">

                        <div class="provider-append" id="toggleExtraProvider">
                            <div class="form-group">
                                <label>Provider</label>
                                <input type="text" class="form-control" id="practiceProvider" placeholder="Full provider name with coredentials" />
                            </div>
                            <div class="form-group">
                                <label>NPI</label>
                                <input type="text" class="form-control" id="providerNPI" placeholder=" NPI" />
                            </div>
                            <div class="form-group">
                                <label>MM #</label>
                                <input type="text" class="form-control" id="providerM" placeholder="M Provider #" />
                            </div>

                            <hr />
                        </div>

</div>  

我尝试将 provider-append 类附加到 new-providers

这是我的 jQuery 脚本:

<script type="text/javascript">
     $(document).ready(function() {
         $("#toggleExtraProvider div.form-group input").each(function() {
             if($(this).val() =! "") {
                 var target = $("new-providers");
                 target.append(".provider-append");
                 }
         }); 

     });​
</script>

【问题讨论】:

  • 你想复制整个 div 类 "provider-append" 吗?

标签: javascript jquery input append collapse


【解决方案1】:

您需要检查特定 div 中的空输入框,为此使用 filter() 如果所有输入框都已填满,则使用 jQuery clone() 克隆父 div(输入组)。并且您应该使用更改事件而不是输入,因为这里的输入将是多余的,因此每次更改文本框中的单个字符时都会运行,另一方面,当用户完成输入并且输入框失去焦点时会触发更改事件。

$(document).ready(function () {

    $(document).on("change",".provider-append input",function(){
        var allHaveText;
        var parentDiv = $(this).closest("div.provider-append");
        emptyInputs=parentDiv.find("input[type=text]").filter(function () {
            return !this.value;
        });                  
        if(emptyInputs.length==0)
        {
            newGroup = parentDiv.clone().appendTo(".new-providers"); 
            newGroup.find("input[type=text]").each(function(){
                $(this).val("");
            });
        }
    });

});

这是一个工作示例

$(document).ready(function () {

    $(document).on("change",".provider-append input",function(){
        var allHaveText;
        var parentDiv = $(this).closest("div.provider-append");
        emptyInputs=parentDiv.find("input[type=text]").filter(function () {
            return !this.value;
        });                  
        if(emptyInputs.length==0)
        {
            newGroup = parentDiv.clone().appendTo(".new-providers"); 
            newGroup.find("input[type=text]").each(function(){
                $(this).val("");
            });
        }
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="new-providers">

  <div class="provider-append">
    <div class="form-group">
      <label>Provider</label>
      <input type="text" class="form-control" placeholder="Full provider name with coredentials" />
    </div>
    <div class="form-group">
      <label>NPI</label>
      <input type="text" class="form-control" placeholder=" NPI" />
    </div>
    <div class="form-group">
      <label>MM #</label>
      <input type="text" class="form-control" placeholder="M Provider #" />
    </div>

    <hr />
  </div>

</div>

希望对你有帮助。

【讨论】:

  • 谢谢哥们!!从来没有人以这种崇高的方式回答过问题。
  • 不客气,感谢兄弟的补充 :)
猜你喜欢
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多