从bootstrap对话框

时间:2016-02-09 08:09:44

标签: javascript jquery forms twitter-bootstrap struts-1

我有struts1调度操作和一个有两个提交按钮的表单,这些按钮有参数和值,用值调用方法名称。 好吧没有问题。

但是当点击删除按钮时,我想用bootstrap对话框确认。

$('.btnDelete').on('click', function(e){
        var $form=$(this).closest('form');
        e.preventDefault();
        $('#confirm').modal({ backdrop: 'static', keyboard: false })
        .one('click', '#delete', function (e) {
            var sectorId = $(this).parent().parent().children()[0].innerHTML;
            var input = document.createElement("input");
            input.setAttribute("type", "hidden");
            input.setAttribute("name", "sectorId");
            input.setAttribute("value", sectorId);
            document.getElementById("sectorForm").appendChild(input);
            $("#sectorForm").submit();
        });
    });

此处需要e.preventDefault()才能停止表单提交。 当从对话框中单击删除按钮时,将传递隐藏参数并提交表单。但是服务器显示错误信息以下。

  

HTTP状态500 - 请求[/ SectorManagement]不包含名为“action”的处理程序参数。这可能是由标签文本中的空格引起的。

请注意,删除Bootstrap对话框时没有问题。

1 个答案:

答案 0 :(得分:0)

解决方案是添加一个名为action和value的附加隐藏参数。

$('.btnDelete').on('click', function(e){
    var $form=$(this).closest('form');
    e.preventDefault();
    $('#confirm').modal({ backdrop: 'static', keyboard: false })
    .one('click', '#delete', function (e) {
        var sectorId = $(this).parent().parent().children()[0].innerHTML;
        var input = document.createElement("input");
        input.setAttribute("type", "hidden");
        input.setAttribute("name", "sectorId");
        input.setAttribute("value", sectorId);
        document.getElementById("sectorForm").appendChild(input);

        input = document.createElement("input");
        input.setAttribute("type", "hidden");
        input.setAttribute("name", "action");
        input.setAttribute("value", delete);
        document.getElementById("sectorForm").appendChild(input);
        $("#sectorForm").submit();
    });
});

我不知道但是可以有更好的解决方案。 会等你的答案。