javascript - 自定义 JQuery UI 对话框的正确方法

标签 javascript jquery html css

我基本上想要实现的是自定义 JQuery 对话框。

考虑我在下面有一个片段:

$(document).ready(function() 
{
  var dialogAddPartDiv = $('#dialogAddPart');
  
  $('#showDialogButton').click(function() 
  {
     dialogAddPartDiv.dialog('open');
  });
  
  dialogAddPartDiv.dialog({
     autoOpen: false,
     modal: true,
     buttons:
     {
       'Save' : function(){}
     },
     beforeClose : function(event) 
     {
       if(!confirm("It won't be saved. Continue?"))
       {
         return false;
       }
       else 
       {
       }
     },
     width:500,
  });
});
.ui-widget.ui-widget-content 
{
    border: 2px solid #05788d;
}

.ui-widget-content 
{
    border: 3px solid #05788d
    background: #ffffff;
    color: #222222;
}
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

<body>


<button type="button" id="showDialogButton">+Show Dialog</button>

<div id="dialogAddPart">

<table>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td colspan="2"><input type="text" style="width:100%;" value=""></td>
</tr>

<tr>
<td>Test:</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td colspan="2"><input type="text" style="width:100%;" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>


</table>

</div>

</body>

我尝试使用 CSS 自定义它以更改边框颜色,但它似乎不起作用。我实际上还需要自定义“关闭”和“保存”按钮,但它看起来甚至更难解决问题(例如,当我尝试在 .ui- widget-header 为了摆脱顶部这个令人讨厌的灰色条,它也不起作用。让它起作用的唯一方法是 display:none in >.ui-dialog-titlebar,但它会导致“关闭”按钮消失,这对我来说不太好)。自定义所有这些内容的正确方法是什么?

最佳答案

我对您的代码做了一些修改。在脚本中,我添加了一个新类作为父类,它是 customizeDialog,将 css 更新为标题并使用父类保存按钮,我用新的 css 覆盖了旧的 css。

希望对你有用。谢谢!

	$(document).ready(function() {
  var dialogAddPartDiv = $('#dialogAddPart');
		  
  $('#showDialogButton').click(function() 
  {
    dialogAddPartDiv.dialog('open');
  });
		  
  dialogAddPartDiv.dialog(
  {
    autoOpen: false,
	modal: true,
	buttons:
	{
	  'Save' : function(){}
	},
	beforeClose : function(event) 
	{
	  if(!confirm("It won't be saved. Continue?"))
	  {
	    return false;
	  }
	  else 
	  {
	  }
	},
	width:500,
  });
  $('.ui-dialog').addClass('customizeDialog');
});
  
  	.ui-widget.ui-widget-content 
{
    border: 2px solid #05788d;
}

.ui-widget-content 
{
	border: 3px solid #05788d;
	background: #ffffff;
	color: #222222;
}

/* Customize dialog css */
.ui-widget.ui-widget-content.customizeDialog{
	border: none;
	box-shadow: 0 5px 35px rgba(190, 184, 184, 0.65);
}
.customizeDialog .ui-widget-header, .customizeDialog .ui-button{
	background-color: transparent;
	background-image: none;
	color: #fff;
	border: 0;	
	padding: 0;
}
.customizeDialog .ui-button{
    color: #fff;
    background-color: #337ab7;
    border-color: #2e6da4;
    padding: 10px;
    font-size: 13px;
}
.customizeDialog  .ui-dialog-titlebar-close{
	background: #ddd;
}
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

<body>


<button type="button" id="showDialogButton">+Show Dialog</button>

<div id="dialogAddPart">

<table>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td colspan="2"><input type="text" style="width:100%;" value=""></td>
</tr>

<tr>
<td>Test:</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td colspan="2"><input type="text" style="width:100%;" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>

<tr>
<td>Test</td>
<td><input type="text" size="40" value=""></td>
</tr>


</table>

</div>

</body>

关于javascript - 自定义 JQuery UI 对话框的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47974790/

相关文章:

javascript - jquery,如何在javascript中获取URL GET变量?

javascript - JavaScript 变量赋值中潜在的 XSS

javascript - css 调整水平下拉菜单的大小

javascript - JQuery - 如何使按钮滚动到下一个 div,但向上滚动时做出响应

javascript - Vue.JS 表数据未显示在行中

Javascript Map() 函数有奇怪的行为

javascript - 在 .map 中使用 `await` 可以工作,但似乎会跳过父级的 `await` 功能

javascript - 在窗口上添加点击事件,但忽略所有以 https 开头的链接

c# - asp.net MVC 如何从 POST 接收数据

javascript - 如何通过 onchange() 更改文本字体大小