ajaxform select2连接多个ID

时间:2016-02-22 18:35:17

标签: concatenation ajaxform select2

我有一个带有ajaxform的select2搜索表单,它将新的表单条目连接到原始的select2搜索表单中。如果添加了多个新条目,则新文本值会正确连接到搜索字段中,但是,任何新的隐藏ID都会替换现有的ID。它似乎被添加,因为所有新文本值都显示在select2搜索字段中。我认为问题是除了连接到搜索字段的文本字段之外,新ID应该连接到隐藏的cropstageid字段。我不知道该怎么做。感谢您的帮助。

<script>
$(document).ready(function() { 

$("#search").select2({
width: '60%',
allowClear: true,
minimumInputLength: 0
});

$('#btnSubmit').on('click', function() {

$.ajax({
    asynch : true,
    type : 'POST',
    dataType : 'json',
    url: '../cfc/stages.cfc?method=addstage&returnformat=json',
    //all form fields submitted to url
    data: $("form").serialize(),

    success : function(data, textStatus) {
        //close the modal
        $('#stagemodal').modal('hide');

        //set the returned data to a variable
        var fullname = $('#stagename').val();
        $("#cropstageid").val(data.DATA);

        //get current selection
        var selection = $(search).select2("data");
        //add a new item to the selection
        selection.push({id: data.DATA, text: fullname})
        //set the updated selection
        $(search).select2("data",selection);

        //reset form
        $('#addstageform')[0].reset();
        //output data to console
        console.log(data.DATA);

}
});
});

});
</script>


<cfform name="stageform" id="stageform" action="settings_form_action.cfm" method="post" ENCTYPE="multipart/form-data">

<h4 class="text-primary">Select Crop Stages</h4>
<input type="hidden" id="cropstageid" name="cropstageid">

<cfselect id="search" multiple name="cropstageid" >
<cfloop query="stages" >
<option value="#cropstageid#" >#stage#</option>
</cfloop>

</cfform>

*新条目的AjaxForm

<cfform id="addstageform" name="addstageform" action="" method="post">
<input type="text" name="stagename" id="stagename" autofocus size="35">
<input type="button" id="btnSubmit" value="Add" /><
</cfform>

1 个答案:

答案 0 :(得分:0)

感谢同事的帮助,解决方案如下:

  1. 成功后我们不再附加到隐藏字段,因此请删除 $( “#cropstageid”)VAL(data.DATA);
  2. 成功,添加 $('#search')。append(''+ fullname +''); 此行添加了新添加的ajaxform记录中的另一个选择选项
  3. 不再需要隐藏值,因为它作为select选项附加,因此删除表单中隐藏的cropstageid表单字段。
  4. 清理过的脚本如下:

    <script>
    $(document).ready(function() { 
    
    $("#search").select2({
    width: '60%',
    allowClear: true,
    minimumInputLength: 0
    });
    
    $('#btnSubmit').on('click', function() {
    
    $.ajax({
    asynch : true,
    type : 'POST',
    dataType : 'json',
    url: '../cfc/stages.cfc?method=addstage&returnformat=json',
    //all form fields submitted to url
    data: $("form").serialize(),
    
    success : function(data, textStatus) {
    //close the modal
    $('#stagemodal').modal('hide');
    //set the returned data to a variable
    var fullname = $('#stagename').val();
    //get current selection
    var selection = $('#search').select2("data");
    //add the new option to the select 
    $('#search').append('<option value="' + data.DATA + '">' + fullname +    '</option>');
    //add a new item to the selection array
    selection.push({
    id: data.DATA, 
    text: fullname
    });
    //set the updated selection
    $('#search').select2("data",selection);
    //reset the modal form
    $('#addstageform')[0].reset();
    //output to the console
    console.log(data.DATA);
    }
    
    });
    });
    
    });
    </script>