jQuery的: - removeData()在后台运行脚本的结果被执行后删除?(jQuery:

2019-10-29 05:12发布

我有用于更新或添加一个新的对象模式窗口Store

这种模式有两个属性级联下拉列表: DepartmentDistrict

究竟应该如何工作的:

我们首先要确定我们在创建或更新的情况Store

如果是一个新的 Store的模式打开和使用jQuery,我们提出了一个默认值District dropdownlists(因为没有Department已被选定尚未)。

    <script type="text/javascript">

        var wasclicked = 0;
        var $this = this;

        $(document).ready(function () {

            document.getElementById("modalbutton").onclick = function () {
                //is AddNew Store button is hitted, this var = 1
                wasclicked = 1;
            };

            $('#modal-action-store').on('hidden.bs.modal', function () {
                //global.wasclicked = 0;
                wasclicked = 0;
                $(this).removeData('bs.modal');
            });

            $('#modal-action-store').on('shown.bs.modal', function (e) {
                console.log($('#DistrictID').length);
                //if wasclicked equals 1 that means we are in the AddNew Store scenario.
                if (wasclicked == 1) {
                    //a default value is sent to District dropdownlist
                    var items = "<option value='0'>-- Seleccione Distrito --</option>";
                    $('#DistrictID').html(items);
                };


            });
        });

</script>

然而,就在这时,默认值后添加,一个几分之一秒后,该值被删除。

我已经试过

我注意到,当我删除此行的代码:

$(this).removeData('bs.modal');

从前面的脚本,它工作正常,但我需要为了从模态清除数据的代码,如果我需要使用模式编辑其他Store

另外,当我调试项目调试程序并没有停止在该行的断点,所以我不知道为什么它以某种方式在后台执行? 是不是因为它的包裹里面的功能document.ready()

我一直在努力与这个好几天。 我感谢所有帮助的注释。

aditional的信息:

该项目的在线版本:

有一个在线版本此进行调试:

http://plataformafantasypark.azurewebsites.net/

用户名:密码adelgado:$ Adelgado33

在菜单“商店” - >“记录”

按钮调用模式:

<div class="btn-group" id="modalbutton">
    <a id="createEditStoreModal" data-toggle="modal" asp-action="Create" 
         data-target="#modal-action-store" class="btn btn-primary">
            <i class="glyphicon glyphicon-plus"></i>  NEW STORE
        </a>
</div>

模态:

@model Application.Models.ApplicationviewModels.StoreIndexData
@using Application.Models

<form asp-action="Create" role="form">    
        @await Html.PartialAsync("_ModalHeader", new ModalHeader
    { Heading = String.Format("Actualización de Modelo: Tiendas") })

        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="modal-body form-horizontal">
            <div class="form-group">
                <label asp-for="DepartmentID" class="col-md-2 control-label"></label>
                <div class="col-md-10">
                    <select asp-for="DepartmentID" class="form-control"
                            asp-items="@(new SelectList(@ViewBag.ListofDepartment,"DepartmentID","DepartmentName"))"></select>
                </div>
            </div>
            <div class="form-group">
                <label class="col-md-2 control-label">Distrito</label>
                <div class="col-md-10">
                    <select class="form-control" id="DistrictID" name="DistrictID" asp-for="DistrictID"
                            asp-items="@(new SelectList(@ViewBag.ListofDistrict,"DistrictID","DistrictName"))"></select>
                </div>
            </div>
            {... more elements}
       </div>
</form>

Answer 1:

为什么不这样做(?):

$("#modalbutton").on('click', function () {
       //is AddNew Store button is hitted, this var = 1

       wasclicked = 1;
 });


Answer 2:

我们的想法是采取从/商店/创建接收的远程内容的装载和插入的手动控制。 我没有设置来测试这一点,但不妨一试。

你需要摆脱/注释掉现有的.on('showN.bs.modal')处理器,并且你可能就要上摆脱HREF的<a>调用的模式,不知道标签。

$('#modal-action-store').on('show.bs.modal', function (e) {
    if (wasclicked == 1) {
        // load the form, once it's done loading modify it as needed
        $('#modal-action-store').find('.modal-content').load('/Stores/Create', function () {
            $('#DistrictID').html('<option value='0'>-- Seleccione Distrito --</option>');
        });
    }
});


文章来源: jQuery: Result of script gets deleted after execution - removeData() running on the background?