- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在动态创建一些表单,并且在 MVC5 应用程序中使用 bootbox 4 以及 bootstrap 3 和 jquery 3.1.0。
编辑:我将项目的 jquery 从 1.10.2 更新到 3.1.0,下面仍然有同样的问题。
用法:点击移除,bootbox通过模态确认移除,如果确认,则调用表单上的.submit() Action 。
问题:我点击删除按钮,它弹出一个确认操作的模式,我点击“继续”,但它什么也没做。在所有表单元素中似乎只有一个有效的提交操作。因此,我能够在每次页面刷新时成功调用一个元素的提交。
我是 javascript 的新手,所以我现在有一个基本的了解,我正在尝试弄清楚我在下面的代码中做错了什么。任何帮助将不胜感激。
我的查看代码:
@foreach (var user in Model.Users)
{
<tr>
<td>
@user.Id
</td>
<td class="text-center">
@user.FirstName @user.LastName
</td>
<td class="text-center">
@Html.CheckBox("role", user.IsAdmin)
</td>
<td>
@using (Html.BeginForm("UpdateUserRole", "Admin", FormMethod.Post, new {@class = "btn-inline"}))
{
@Html.Hidden("id", user.Id)
@Html.Hidden("role", user.GetRole(user.IsAdmin))
<button type="submit" class="btn btn-info">Update</button>
}
@using (Html.BeginForm("RemoveUser", "Admin", FormMethod.Post, new {@class = "btn-inline", @id=user.Id+"Form"}))
{
@Html.Hidden("id", user.Id)
<button data-user-id=@user.Id type="submit" class="btn btn-danger buttonElement">Remove</button>
}
</td>
</tr>
}
我的脚本(添加到 View 底部):
@section scripts
{
<script type="text/javascript">
$(function () {
$('form').on('click','button.buttonElement',function (e) {
var user = $(this).attr("data-user-id");
e.preventDefault();
bootbox.dialog({
message: "Do you want to continue ?", title: "Remove User",
buttons: {
main: { label: "Cancel", className: "btn btn-default", callback: function () { return true; } },
success: { label: "Continue", className: "btn btn-default", callback: function () { $('#'+user+'Form').submit(); } }
}
});
});
});
</script>
}
编辑:这是一些 HTML 输出:
<table class="table table-hover">
<tbody>
<tr>
<td>
Joe
</td>
<td class="text-center">
Joe Cuevas
</td>
<td class="text-center">
<input checked="checked" id="role" name="role" type="checkbox" value="true"><input name="role" type="hidden" value="false">
</td>
<td>
<form action="/Admin/UpdateUserRole" class="btn-inline" method="post">
<input data-val="true" data-val-regex="Invalid!" data-val-regex-pattern="([A-Za-z0-9.-])+" data-val-required="NetworkID is required!" id="id" name="id" type="hidden" value="joe"><input id="role" name="role" type="hidden" value="Admin"> <button type="submit" class="btn btn-info">Update</button>
</form> <form action="/Admin/RemoveUser" class="btn-inline" id="joeForm" method="post">
<input data-val="true" data-val-regex="Invalid!" data-val-regex-pattern="([A-Za-z0-9.-])+" data-val-required="NetwordID is required!" id="id" name="id" type="hidden" value="joe"> <button data-user-id="joe" type="submit" class="btn btn-danger buttonElement">Remove</button>
</form>
</td>
</tr>
</tbody>
</table>
编辑:解决方案
事实证明,在最终的 HTML 输出中,modelstate 覆盖了我 View 中 foreach 循环生成的所有表单的 id 值。这解释了为什么会出现上述所有症状。在返回我的 viewModel 之前,我只是将以下代码添加到我的 Controller 并且它已修复:ModelState.Remove("id");
最佳答案
就嵌套而言,table/tr/td/form 很好。您可以简化触发表单提交:
$('form').on('click','button.buttonElement',function (e) {
var user = $(this).attr("data-user-id");
var form = $(this).closest('form'); // <-- add this
e.preventDefault();
bootbox.dialog({
message: "Do you want to continue ?",
title: "Remove User",
buttons: {
main: {
label: "Cancel",
className: "btn btn-default",
callback: function () {
return true;
}
},
success: {
label: "Continue",
className: "btn btn-default",
callback: function () {
form.submit(); // <-- change this
}
}
}
});
});
您也可以简单地使用 bootbox.confirm
函数。如果您想要自定义按钮文本,请遵循第二个示例 here , 就像这样。
$('form').on('click','button.buttonElement',function (e) {
var user = $(this).attr("data-user-id");
var form = $(this).closest('form'); // <-- add this
e.preventDefault();
bootbox.confirm({
message: "Do you want to continue ?",
title: "Remove User",
buttons: {
cancel: {
label: "Cancel",
className: "btn btn-default"
},
confirm: {
label: "Continue",
className: "btn btn-default"
}
},
callback: function(result) {
if(result == true) {
form.submit();
}
}
});
});
您可能需要考虑这样一个事实,即用户可以在不单击您的继续按钮的情况下触发表单提交,在这种情况下删除请求将在没有确认的情况下发生。
此外,Bootbox 还没有被确认可以与 jQuery 3.x 一起工作,尽管这更多地取决于父 Bootstrap 库版本 - 如果您必须升级到 Bootstrap 3.3.7已经升级到 jQuery 3.x。
关于javascript - Bootbox 回调表单提交无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39022637/
我正在尝试自定义 bootboxjs.prompt 选项,但它似乎不允许选项对象作为参数 这是来自 http://bootboxjs.com/index.html#api 的示例 bootbox.pr
我在同一个页面中有多个 bootbox.alert() 和 bootbox.confirm() 模态框需要清楚地添加不同的样式,但到目前为止运气不好,我如何为这些模态框定义我自己的样式类。 var a
我使用 bootbox 创建一个对话框,但我希望某些按钮仅在某些条件下显示。 我搜索了很多,但没有发现任何有用的信息.. 我这样定义引导箱: bootbox.dialog({ title: "t
bootbox 是否有一个选项可以在用户通过“x”按钮关闭对话框时调用一个函数?使用 bootbox.dialog() 时,我没有找到关于此的文档。 有没有这样的: bootbox.dialog({
不幸的是,Bootbox 文档 ( http://paynedigital.com/2011/11/bootbox-js-alert-confirm-dialogs-for-twitter-boots
如何在 Bootstrap 的 Bootbox 中拥有 2 个输入,而不是只有一个? 我需要在模式对话框中接收 2 个值。 最佳答案 实际上,有一种更简单的方法,不需要修改 bootbox 代码。 您
我已经在我的项目中下载了 bootbox.js 并实现了此代码来显示弹出模式对话框,但我的控制台中没有打印任何错误或成功结果。我对错误生成的位置感到困惑。 JS文件 $('switch input[t
我想知道是否有人可以帮助我编写一些代码。 我在某些模态窗口中使用 BootBox,我想向确认方法添加一些自定义 HTML,但我认为我做得不对。 我的代码如下: $('.next').click
我正在使用 Bootbox 为我的 Web 应用程序创建一个更漂亮的警报对话框。是否可以将警告对话框中的文本居中对齐? 最佳答案 您可以将此样式添加到您的 css 中: .modal-body {
Bootbox.js 是否有在成功显示对话框时调用函数的方法? 我原本打算用它来将一个隐藏的表单从页面的其他地方切换到 Bootbox 中,但是如果没有回调或回调类比,那是做不到的。然后我设计了一种将
任何人都知道如何解决这个问题。我有这段代码在删除文件时显示 bootbox.confirm,但它不起作用。 $('#fileupload').fileupload({ destroy: functio
我想显示一个带有引导框的文本区域元素。此文本区域应与 WYSIWYG 编辑器一起使用,它将由 $('#editor').redactor(); 所以我想在显示文本区域的那一刻添加它。我试过这个: bo
我正在动态创建一些表单,并且在 MVC5 应用程序中使用 bootbox 4 以及 bootstrap 3 和 jquery 3.1.0。 编辑:我将项目的 jquery 从 1.10.2 更新到 3
我正在尝试在 Twitter Bootstrap 模式对话框中加载 Facebook 登录按钮: $("a.fb-login, .modal a.fb-login").on("click", func
我想知道是否有一种方法可以动态更新 Bootstrap 框模态的内容。 例子 bootbox.dialog({ message: "Hi there", title:
我使用的是最新版本的 Bootbox,需要显示大量文本。文本溢出 Bootbox 模态窗口和浏览器。我需要包含的文本并在适当的时候带有垂直滚动条。我试过将消息包装在各种 html 元素中,但没有成功。
我正在为我的可过滤组合使用 bootstrap 3 和 bootbox.js,我希望能够在模式比浏览器窗口长时向下滚动,但你不应该能够滚动超过模式。 默认情况下,当您单击投资组合元素时,模式会滚动到页
我想在我的 Bootbox 警告框中换行。我知道在 Javascript 中你可以使用 \n 但这似乎不起作用。这是我尝试过的: bootbox.alert("Hello \n world"); 最佳
我正在尝试使用这个: $('#delete').live('click',function(){ var result; bootbo
我这里没有太多代码要展示,我使用 bootbox.js (http://bootboxjs.com/) 来发出警报,每次弹出警报时,页面都会滚动到顶部。任何想法如何防止它?我正在从一长串列表中删除项目
我是一名优秀的程序员,十分优秀!