javascript - ajax jquery + bootstrap 模式仅在第二次单击时有效

标签 javascript jquery ajax asp.net-mvc twitter-bootstrap

我有一个 Bootstrap 模式,我想用从 ASP.NET MVC 5 操作检索到的数据来填充该模式。

用户单击按钮后,模式应该与操作中的数据一起可见。

第一次单击时,没有任何反应。第二次点击后,每次点击都像魅力一样。

我不明白发生了什么。

在 Chrome 工具中,我可以看到第一次点击生成了带有一些通用文本的错误:

jquery-1.10.2.js:8157 Uncaught TypeError: Cannot read property 'methods' of undefined

按钮:

<button id="addContaButton" class="btn btn-primary btn-sm pull-right"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> conta</button>  

模态:

<div class="modal fade" id="addContaModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-url="@Url.Action("Create","Conta")">
        <div class="modal-dialog">
            <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="myModalLabel">Criar uma nova conta</h4>
                </div>
                <div class="modal-body" id="add-conta-modal-body">

                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancelar</button>
                    <button type="button" class="btn btn-primary">Criar conta</button>
                </div>
            </div>
        </div>
    </div>

JavaScript:

$(document).ready(function () {
    $('#addContaButton').click(function () {
        var url = $('#addContaModal').data('url');

        $.ajax({
            url: url,
            success: function (data) {
                $('#add-conta-modal-body').html(data);
                $('#addContaModal').modal('show');
            },
            async: false,
            error: function (req, status, errorObj) {
                alert("Ocorreu um erro ao tentar criar uma conta. Por favor, entre em contato.");
            }

        });
    });

});

编辑:我发现问题的根源在于我包含的另一个 javascript 以帮助验证,但我不明白为什么它只会导致第一次单击失败。

js是这样的:

$(document).ready(function () {

    $.validator.methods.range = function (value, element, param) {
        var globalizedValue = value.replace(",", ".");
        return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]);
    }

    $.validator.methods.number = function (value, element) {
        return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value);
    };

});

最佳答案

我在使用它的验证代码文件之后导入 jquery.validation 文件。

关于javascript - ajax jquery + bootstrap 模式仅在第二次单击时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27470259/

相关文章:

php - php for 循环内的 HTML 标签不采用或添加动态 css 和 div 标签

javascript - 如何在ajax url中传递下拉列表的值

javascript - 一种为 Google 时间轴图表设置自定义开始和结束时间的方法

javascript - 如何在 Angular nvd3 折线图上添加工具提示

javascript - Vue - 动画与使用 Click 的普通 javascript 实现的区别

Javascript:终止不是来自特定路径的请求或直接请求

c# - Ajax 传递空值但 Controller 在 ASP.NET MVC 中获取 null

javascript - 在 JavaScript 循环中创建唯一 ID 按钮

jquery - Bootstrap 3 Scrollspy 删除事件状态

ajax - jquery .submit live click运行多次