更改选项文本时更改多选选项文本jquery

时间:2016-11-11 08:41:30

标签: javascript jquery html

我正在创建一个表单,允许用户手动将选项添加到多个选择框。我提供了预览字段(用于显示预览)和默认值字段(如果用户需要,则选择默认值)。有一个字段供用户输入选项。一旦用户在输入选项后单击Add按钮,它将以提供的div显示。每个选项也可以编辑。

选项添加后,该选项将作为下拉列表添加到默认值字段,并作为下拉列表添加到预览字段。只要添加选项,就可以同时完成。

编辑选项时(根据我的逻辑),应编辑div中的选项,并且还应编辑默认值和预览选项中的选项。这就是我尝试的方式:

<div class="modal fade" id="MultiSelect_Modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static">
        <div class="modal-dialog" style="min-width: 75% !important;">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">
                        <span aria-hidden="true">&times;</span><span class="sr-only">Close</span>
                    </button>
                    <h4 class="modal-title" id="FieldType">Multi Select</h4>
                </div>
                <div class="modal-body form-horizontal">
                    <div class="row">
                        <div class="col-sm-6">
                            <div class="form-group required">
                                <label for="MultiSelect_Label" class="col-sm-4 control-label">Label Name</label>
                                <div class="col-sm-6">
                                    <input type="text" class="form-control" id="MultiSelect_Label" name="MultiSelect_Label" value=''>
                                </div>
                            </div>
                        </div>
                        <div class="col-sm-6">
                            <div class="form-group">
                                <label for="MultiSelect_DefaultValues" class="col-sm-4 control-label">Default Value</label>
                                <div class="col-sm-6">
                                    <select id="MultiSelect_DefaultValues" name="MultiSelect_DefaultValues[]" class="form-control" multiple="multiple" style="width: 160px;">
                                        <option value="0">---Select---</option>
                                    </select>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="row" id="manualEntryDiv">
                        <div class="col-sm-6">
                            <div class="form-group required">
                                <label for="MultiSelect_Options" class="col-sm-4 control-label">Options</label>
                                <div class="col-sm-6">
                                    <div class="input-group">
                                      <input type="text" class="form-control" id="MultiSelect_Options" name="MultiSelect_Options" value=''>
                                      <span class="input-group-btn">
                                        <input type="button" class="btn btn-primary" id="MultiSelect_optionAdd" name="MultiSelect_optionAdd">
                                      </span>
                                    </div>
                                </div>                                  
                            </div>
                        </div>
                        <div class="col-sm-6">
                            <div class="result" id="MultiSelect_mydiv"></div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-sm-6">
                            <div class="form-group" style="margin-left: -20px;">
                                <label for="MultiSelect_Description" class="col-sm-4 control-label">Description</label>
                                <div class="col-sm-6">
                                    <textarea type="text" class="form-control" id="MultiSelect_Description" name="MultiSelect_Description" row='3'></textarea>
                                </div>
                            </div>
                        </div>
                        <div class="col-sm-6">
                            <div class="form-group required">
                                <label for="MultiSelect_Status" class="col-sm-4 control-label">Status</label>
                                <div class="col-sm-6">
                                    <select class="form-control" name="MultiSelect_Status" id="MultiSelect_Status">
                                        <option value="1">Active</option>
                                        <option value="0">In-Active</option>
                                    </select>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-sm-6">
                            <div class="form-group">
                                <label for="MultiSelect_Preview" id="MultiSelect_PreviewID" class="col-sm-4 control-label">Preview</label>
                                <div class="col-sm-6">
                                    <select id="MultiSelect_Preview" name="MultiSelect_Preview[]" class="form-control" multiple="multiple" style="width: 160px;">
                                        <option value="0">---Select---</option>
                                    </select>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="modal-footer clearfix">
                    <button type="button" class="btn btn-default" onclick="clearcontrols();" data-dismiss="modal">Close</button>
                    <input type="submit" id="MultiSelect_Save" name="MultiSelect_Save" value="Save" class="btn btn-primary">
                </div>
            </div>
        </div>
    </div>

$("#MultiSelect_optionAdd").click(function(){
            if($("#MultiSelect_Options").val() == ""){
                MyNotif.Show("Please enter an option","warning");
            } else {
                if($("#MultiSelect_optionAdd").val() == "Add"){
                    var optionvalue = $("#MultiSelect_Options").val();
                    $("#MultiSelect_mydiv").append("<span id='span" + a + "' class='editbutton'>" + optionvalue + "&nbsp&nbsp&nbsp&nbsp<a href='javascript:void(0)' ><i class='fa fa-close btn btn-danger btn-xs btn-remove btn-icon remove' id='remove" + a + "' style='display: none;'></i></a><a href='javascript:void(0)'><i class='fa fa-pencil btn btn-warning btn-xs btn-edit btn-icon edit' id='edit" + a + "' style='display: none; margin-right:10px;'></i></a></span><br/>");
                    $("#MultiSelect_Preview").append('<option value="value-'+ optionvalue +'" id="options'+ a +'">' + optionvalue + '</option>');
                    $("#MultiSelect_DefaultValues").append('<option value="value-'+ optionvalue +'" id="defaultOptions'+ a +'">' + optionvalue + '</option>');
                    a = a + 1;
                    $("#MultiSelect_Options").val("");
                } else if ($("#MultiSelect_optionAdd").val() == "Update") {
                    $("#"+spanid).text($("#MultiSelect_Options").val()).append("&nbsp&nbsp&nbsp&nbsp<a href='javascript:void(0)' ><i class='fa fa-close btn btn-danger btn-xs btn-remove btn-icon remove' id='" + removebuttonid + "' style='display: none;'></i></a><a href='javascript:void(0)'><i class='fa fa-pencil btn btn-warning btn-xs btn-edit btn-icon edit' id='" + editbuttonid + "' style='display: none; margin-right:10px;'></i></a>");
                    $("#MultiSelect_optionAdd").val("Add");
                    $("#"+optionsid).text($("#MultiSelect_Options").val());
                    $("#"+defaultOptionsid).text($("#MultiSelect_Options").val());
                    $("#"+defaultOptionsid).val("value-"+$("#MultiSelect_Options").val());
                    $("#MultiSelect_Options").val("");
                }

                $('.remove').click(function(){
                    removebuttonid = $(this).attr("id");
                    spanid = removebuttonid.replace('remove', 'span');
                    optionsid = removebuttonid.replace('remove', 'options');
                    defaultOptionsid = removebuttonid.replace('remove', 'defaultOptions');

                    $("#"+spanid).next("br").remove();
                    $("#"+spanid).remove(); 
                    $("#"+optionsid).remove();
                    $("#"+defaultOptionsid).remove();
                }); 

                $(".edit").click(function(){
                    addButtonValue = "Update"
                    $("#MultiSelect_optionAdd").val(addButtonValue);
                    editbuttonid = $(this).attr("id");
                    spanid = editbuttonid.replace('edit', 'span');
                    optionsid = editbuttonid.replace('edit', 'options');
                    defaultOptionsid = editbuttonid.replace('edit', 'defaultOptions');

                    removebuttonid = editbuttonid.replace('edit', 'remove');

                    var value = ($("#"+spanid).text()).trim();
                    $("#MultiSelect_Options").val(value);
                });             
            }
        });

在这里,每当我添加一个选项时,该选项都会被添加到div,默认值和预览字段中。无论我添加什么作为选项,它都会被添加。

但问题是,当我编辑我提供的选项时,div中的选项会发生变化。但是,默认值和预览中的选项显示先前提供的相同文本。但是,当我检查元素时,我可以看到编辑的文本以及编辑的值。但是,仅显示先前提供的选项。编辑的文本未显示。

我不知道上述代码有什么问题。我该怎么改变呢?

0 个答案:

没有答案