问题是,添加更多按钮包含两个字段:下拉菜单和注释字段。当我选择下拉菜单完成时,则需要注释字段。 JavaScript对于不在“添加更多”按钮内的字段正常工作。

下面是我的代码:

的HTML

<form class="form-horizontal" method="post" action="new.php">
    <!-- Select Basic -->
    <div class="form-group">
        <label class="col-md-4 control-label" for="selectbasic">Status</label>
        <div class="col-md-4">
            <select id="status" name="status[]" class="form-control" >
                <option value="Pending">Pending</option>
                <option value="Work in process">Work in process</option>
                <option value="Completed">Completed</option>
            </select>
        </div>
    </div>

    <!-- Text input-->
    <div class="form-group">
        <label class="col-md-4 control-label" for="textinput">Comment</label>
        <div class="col-md-4">
            <input id="commentss" name="comment[]" type="text" placeholder="" class="form-control input-md" />
        </div>
    </div>

    <div class="input_fields" style="color:black">
        <button class="add_field btn " onclick="incrementValue()" >Add More</button>
    <div>

    <input type="text" name="mytextt[]" hidden="" >
</div>
</div>
</div>

<button id="save_btn" name="save_btn" type="submit" onclick="validate();" class="btn btn-success" >Save</button>
</form>


JavaScript:

<script type="text/javascript">
    function validate() {
        var input=document.getElementById("status");
        var comm=document.getElementById('commentss')
        var inputelement=input.value;

        if (inputelement=="Completed") {
            comm.required=true;
        }
        else {
            comm.required=false;
        }

    }
</script>

$(document).ready(function() {
    var max_fields      = 10; //maximum input boxes allowed
    var wrapper         = $(".input_fields"); //Fields wrapper
    var add_button      = $(".add_field"); //Add button ID
    var wrapper_pre1         = $(".present_fields_1"); //Fields wrapper
    var x = 1; //initlal text box count

    $(add_button).click(function(e){ //on add input button click
    e.preventDefault();

    if (x < max_fields) { //max input box allowed
        x++; //text box increment
        $(wrapper).prepend('<div class="form-group"> <label class="col-md-4 control-label status" for="selectbasic" style="">Status</label><div class="col-md-6"><select id="status" name="status[]"  class="form-control status"><option value="Pending">Pending</option><option value="Work in process">Work in process</option><option value="Completed">Completed</option></select></div></div><div class="form-group"><label class="col-md-4 control-label comment" for="textinput" style="">Comment</label><div class="col-md-4"><input id="comments" name="comment[]" type="text" placeholder="" class="form-control input-md comment" style=""></div></div>')
    }
});

最佳答案

您将元素两次包装在$中。 $(add_button)和$(wrapper)是未定义的,这迫使脚本停止执行。您的点击处理程序应如下所示:

  add_button.click(function(e){ //on add input button click
    e.preventDefault();

    if (x < max_fields) { //max input box allowed
        x++; //text box increment
        wrapper.prepend(...);
    }
});

关于javascript - JavaScript在包含下拉列表和字段的添加更多按钮内部不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43238192/

10-12 12:26
查看更多