动态添加文本框无法正常工作

时间:2015-06-11 05:23:48

标签: javascript jquery html

这非常令人沮丧。我的代码工作正常,直到上周。当用户更改[使用change()]下拉选项中的值时,我会在 HTML 页面中添加多个文本框。

以下是 HTML 代码段:

<div id="files" class="control-group">
    <label class="control-label">No. of files</label>
    <div class="controls" >
        <select id="files" name="files" class="span3">
            <option value="">--Select Option--</option>
            <?php for($i=1;$i<21;$i++){ ?>
                <option value="<?php echo $i ?>"><?php echo $i ?></option> <?php } ?>
        </select>
    </div>
</div>
<div class="control-group" id="titles">
    <label class="control-label">File Titles</label>
    <div class="controls" id="titleAdd"></div>
</div>

这是 Javascript / jQuery

$(document).ready(function(){
        $("#titles").hide();
    });
    var container;
    // Add & Remove textboxes 
    $("#files").change(function(){

        //Remove all textboxes
        $("#titles").show();
        $(container).empty(); 
        $(container).remove();  
        //"DIV" ELEMENT AND DESIGN IT USING JQUERY ".css()" CLASS.
        container = $('<div>', {class: 'controls'});
        var option = $("#files").val();
        for(i=1;i<=option;i++)
        {
            // Add a TextBox
            $(container).append('<input style="display: block;" type=text name="Description[]" class="span3 input-left-top-margins" id="Description' + i +'"' + 'placeholder="File ' + i + ' Title" />');
        }
        $('#titleAdd').after(container);   // ADD THE DIV ELEMENT IN THE RIGHT PLACE.
    });

最令人恼火的是,这段代码几天前工作正常。

4 个答案:

答案 0 :(得分:3)

有两个ID #files

请参阅此处的工作示例:https://jsfiddle.net/1c3b63f4/ - jQuery将始终在此作业中返回一个空字符串:$("#files").val();

答案 1 :(得分:2)

'$("#files").change(function(){'代码放在'document.ready'内: -

$(document).ready(function(){
        $("#titles").hide();

    var container;
    // Add & Remove textboxes 
    $("#files").change(function(){

        //Remove all textboxes
        $("#titles").show();
        $(container).empty(); 
        $(container).remove();  
        //"DIV" ELEMENT AND DESIGN IT USING JQUERY ".css()" CLASS.
        container = $('<div>', {class: 'controls'});
        var option = $("#files").val();
        for(i=1;i<=option;i++)
        {
            // Add a TextBox
            $(container).append('<input style="display: block;" type=text name="Description[]" class="span3 input-left-top-margins" id="Description' + i +'"' + 'placeholder="File ' + i + ' Title" />');
        }
        $('#titleAdd').after(container);   // ADD THE DIV ELEMENT IN THE RIGHT PLACE.
    });
 });

答案 2 :(得分:2)

试试这个......

将id名称文件更改为filesdata,因为您已经使用div的“文件”作为div

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<div id="files" class="control-group">
    <label class="control-label">No. of files</label>
    <div class="controls" >
        <select id="filesdata" name="files" class="span3">
            <option value="">--Select Option--</option>            
                <option value="1">1</option> 
                 <option value="3">2</option> 
                  <option value="3">3</option> 
        </select>
    </div>
</div>
<div class="control-group" id="titles">
    <label class="control-label">File Titles</label>
    <div class="controls" id="titleAdd"></div>
</div>
<script>
$(document).ready(function(){
        $("#titles").hide();

    var container="";
    // Add & Remove textboxes 
    $("#filesdata").change(function(){

        //Remove all textboxes
        $("#titles").show();
        $(container).empty(); 
        $(container).remove();  
        //"DIV" ELEMENT AND DESIGN IT USING JQUERY ".css()" CLASS.
        container = $('<div>', {class: 'controls'});
        var option = $("#filesdata").val();

        for(i=1;i<=option;i++)
        {

            // Add a TextBox
            $(container).append('<input style="display: block;" type=text name="Description[]" class="span3 input-left-top-margins" id="Description' + i +'"' + 'placeholder="File ' + i + ' Title" />');
        }
        $('#titleAdd').after(container);   // ADD THE DIV ELEMENT IN THE RIGHT PLACE.
    });
       });
</script>

演示:https://jsfiddle.net/jqksjzL1/

答案 3 :(得分:1)

您已经提供了相同的id&#34;文件&#34;适用于divselect

更改

<select id="files" name="files" class="span3">

<select id="files-select" name="files" class="span3">

并试试这个js,

$(document).ready(function(){
        $("#titles").hide();
    });
    var container;
    // Add & Remove textboxes 
    $("#files-select").change(function(){

        //Remove all textboxes
        $("#titles").show();
        $(container).empty(); 
        $(container).remove();  
        //"DIV" ELEMENT AND DESIGN IT USING JQUERY ".css()" CLASS.
        container = $('<div>', {class: 'controls'});
        var option = $("#files-select").val();
        for(i=1;i<=option;i++)
        {
            // Add a TextBox
            $(container).append('<input style="display: block;" type=text name="Description[]" class="span3 input-left-top-margins" id="Description' + i +'"' + 'placeholder="File ' + i + ' Title" />');
        }
        $('#titleAdd').after(container);   // ADD THE DIV ELEMENT IN THE RIGHT PLACE.
    });