javascript - 填写之前的 append 输入字段

标签 javascript jquery input append

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

<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 类 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 中是否有空输入框,为此使用 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>

希望对你有帮助。

关于javascript - 填写之前的 append 输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41106177/

相关文章:

javascript - 以编程方式滑回上一页

javascript - AngularJS + CSS : best practice for a live preview?

javascript - 数据在 ajax 调用中作为空 json 数组对象传递

html - 输入框移动到下一行

javascript - 多个文件 - 在 DIV 中预览

javascript - jQuery:仅选择一个包含字符串的类?

javascript - 使用 Javascript 更改 HTML 中的 colspan 颜色

jquery - ionic 选项卡背景颜色

c++ - 读入数字但止于负 C++

javascript - 将 React HOC 与表单一起使用。使用 HOC 传递通用 JSX 和状态