我试图禁用背景一旦弹出窗口打开。我在这里和其他地方尝试了很多东西。其他一切都没有问题。
// HAVE TRIED ALL OF THESE NONE WORK
//
// $(this).modal({
// backdrop: 'static',
// keyboard: false,
// show: false
// });
//
//
// $('#modal-overlay').data('modal').options.backdrop = 'static';
//
// $('[data-toggle="modal"]').each(function () {
// $(this).attr('data-backdrop','static');
// $(this).attr('data-keyboard','false');
// });
//
// $('#modal-overlay').on('.open-modal', function() {
// $(this).modal('#modal-overlay').options.backdrop = 'static';// For outside click of modal.
// $(this).modal('#modal-overlay').options.keyboard = false;// For ESC button.
// });
//
//
// $("#modal-overlay").data('bs.modal')._config.backdrop = 'static';
// $('#modal-overlay').modal(visible: true);
// $('#modal-overlay').modal({backdrop: 'static', keyboard: false}, 'show');
//
// $("#modal-overlay").modal({
// backdrop: 'static',
// keyboard: false
// });
//
// var modal = $('#modal-overlay');
// var keyboard = false; // Prevent to close by ESC
// var backdrop = 'static'; // Prevent to close on click outside the modal
// $('#modal-overlay').modal(keyboard);
// $('#modal-overlay').modal(backdrop);
//
我还尝试了href
链接,data-backdrop="static"
,data-keyboard="false"
。
我希望用户无法通过点击弹出窗口或点击ESC关闭弹出窗口
这应重现问题。点击任何链接,它会打开一个弹出窗口,只要你点击背景页面上的任何地方,它就会关闭。
$(document).ready(function() {
var itemId; // Variable to store the current item ID
// Open the edit modal
$(document).on('click', '.open-modal', function() {
itemId = $(this).data('item-id'); // Get the ID from the clicked element
$('#submit-data').data('item-id', itemId); // Store the ID in the submit button's data
var title = $(this).data('title');
$("#title-label").html(title);
// Fetch the current data for the item and set it in the input field
$.ajax({
type: 'POST',
url: 'get_data.php', // PHP script to fetch data
data: {
id: itemId
},
dataType: "json",
success: function(response) {
$('#name-field').val(response.name);
$('#status-field').val(response.status);
$('#period-field').val(response.period);
$('#notify-field').val(response.notify);
$('.modal-overlay').show();
}
});
});
// Event delegation for opening delete modal
$(document).on('click', '.open-delete-modal', function() {
itemId = $(this).data('item-id'); // Get the ID from the clicked element
$('.delete-modal-overlay').show();
});
// Event for opening add new record modal
$('#add-new-record').click(function() {
var title = $(this).data('title');
$("#title-label").html(title);
$('#submit-data').data('item-id', ''); // No need to prepopulate the ID
$('#name-field').val('');
$('#status-field').val('');
$('#period-field').val('');
$('#notify-field').val('');
$('.modal-overlay').show();
});
// Close modal dialogs
$('.modal-overlay, .delete-modal-overlay, #close-modal, #cancel-delete').on('click', function(event) {
if (event.target === this || event.target.id === 'close-modal' || event.target.id === 'cancel-delete') {
$(this).hide();
}
});
// Submit data to the server using AJAX
$('#submit-data').click(function() {
var nameData = $('#name-field').val();
var statusData = $('#status-field').val();
var periodData = $('#period-field').val();
var notifyData = $('#notify-field').val();
if (nameData == '') {
$('#name-field').css("background-color", "red");
exit();
}
if (statusData == '') {
$('#status-field').css("background-color", "red");
exit();
}
if (periodData == '') {
$('#period-field').css("background-color", "red");
exit();
}
if (notifyData == '') {
$('#notify-field').css("background-color", "red");
exit();
}
var url = itemId ? 'update.php' : 'add.php'; // Use different URL for add and update
$.ajax({
type: 'POST',
url: url,
data: {
id: itemId,
name: nameData,
status: statusData,
period: periodData,
notify: notifyData
},
success: function(response) {
$('.modal-overlay').hide();
location.reload(); // Refresh the originating web page
}
});
});
// Confirm Delete
$('#confirm-delete').click(function() {
$.ajax({
type: 'POST',
url: 'delete.php',
data: {
id: itemId
}, // Pass the ID & section for deletion
success: function(response) {
$('.delete-modal-overlay').hide();
location.reload(); // Refresh the originating web page
}
});
});
});
body {
background-color: #2A333B;
font-family: Arial, Helvetica, sans-serif;
}
#list {
padding: 10px;
clear: both;
color: white;
}
#list table {
border-spacing: 0;
border-collapse: collapse;
font-family: Arial;
font-weight: normal;
font-size: 13px;
font-style: normal;
margin-left: auto;
margin-right: auto;
width: 100%;
}
#list tr th {
background: #3E474E;
;
padding-right: 4px;
padding-left: 4px;
padding-top: 4px;
padding-bottom: 4px;
font-style: bold;
color: #A0A8A8;
border-bottom: 1px solid #999999;
}
#list tr td {
background: #566453;
padding-right: 4px;
padding-left: 4px;
padding-top: 4px;
padding-bottom: 4px;
font-style: bold;
color: white;
border-bottom: 1px solid #999999;
}
#list a {
text-decoration: none;
color: #9fb7d9;
}
#list tr:hover {
background: #4C5154;
padding-right: 4px;
padding-left: 4px;
padding-top: 4px;
padding-bottom: 4px;
font-style: bold;
color: white;
border-bottom: 1px solid #999999;
}
#list tr:hover td {
background: #4C5154;
padding-right: 4px;
padding-left: 4px;
padding-top: 4px;
padding-bottom: 4px;
font-style: bold;
color: white;
border-bottom: 1px solid #999999;
}
.modal-overlay,
.delete-modal-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.7);
padding: 15px;
border-style: solid;
border-width: 1px;
border-color: #999999;
border-radius: 5px;
}
.modal-content,
.delete-modal-content {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: #2A333B;
color: #A0A8A8;
padding: 15px;
border-style: solid;
border-width: 1px;
border-color: #999999;
border-radius: 5px;
}
.button {
background-color: transparent;
padding: 0;
border: none;
background: none;
}
.parentDisable{
position: fixed;
top: 0;
left: 0;
opacity: 0.8;
z-index: 998;
height: 100%;
width: 100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.2/js/bootstrap.min.js"></script>
<div id="list">
<table border="0">
<tr>
<th align="left" colspan="5">
<h1>Data List</h1>
</th>
<th align="center" colspan="2">
<a href="#" class="open-modal" id="add-new-record" data-title="Add">Add</a>
</th>
</tr>
<tr>
<th align="left">id</th>
<th align="left">name</th>
<th align="left">status</th>
<th align="left">period</th>
<th align="left">notify</th>
<th align="left" colspan="2"> </th>
</tr>
<tr>
<td align="left" width="30">1</td>
<td align="left">name1</td>
<td align="left">statusname1</td>
<td align="left">periodname1</td>
<td align="left">notify1</td>
<td align="center" width="30">
<a href="#" class="open-modal" id="open-modal" data-item-id="1"></a>
</td>
<td align="center" width="30">
<a href="#" class="open-delete-modal" id="open-delete-modal" data-item-id="1">Delete</a>
</td>
</tr>
<tr>
<td align="left" width="30">2</td>
<td align="left">name2</td>
<td align="left">statusname2</td>
<td align="left">periodname2</td>
<td align="left">notify2</td>
<td align="center" width="30">
<a href="#" class="open-modal" id="open-modal" data-item-id="2"></a>
</td>
<td align="center" width="30">
<a href="#" class="open-delete-modal" id="open-delete-modal" data-item-id="2">Delete</a>
</td>
</tr>
<tr>
<td align="left" width="30">3</td>
<td align="left">name3</td>
<td align="left">statusname3</td>
<td align="left">periodname3</td>
<td align="left">notify3</td>
<td align="center" width="30">
<a href="#" class="open-modal" id="open-modal" data-item-id="3"></a>
</td>
<td align="center" width="30">
<a href="#" class="open-delete-modal" id="open-delete-modal" data-item-id="3">Delete</a>
</td>
</tr>
<tr>
<td align="left" width="30">4</td>
<td align="left">name4</td>
<td align="left">statusname4</td>
<td align="left">periodname4</td>
<td align="left">notify4</td>
<td align="center" width="30">
<a href="#" class="open-modal" id="open-modal" data-item-id="4"></a>
</td>
<td align="center" width="30">
<a href="#" class="open-delete-modal" id="open-delete-modal" data-item-id="4">Delete</a>
</td>
</tr>
</table>
</div>
<div class="modal-overlay" id="modal-overlay">
<div class="parentDisable"> <!-- add new div here -->
<div class="modal-content" id="modal-content">
<table>
<tr>
<th colspan="2" align="centre"><span class="modal-title" id="title-label"></th>
</tr>
<tr>
<th align="right">Name</th>
<td><input type="text" id="name-field" required></td>
</tr>
<tr>
<th align="right">Status</th>
<td>
<select name="status" id="status-field" required>
<option value=""></option>
<option value="1">Enabled</option>
<option value="2">Disabled</option>
</select>
</td>
</tr>
<tr>
<th align="right">Period</th>
<td>
<select name="period" id="period-field" required>
<option value=""></option>
<option value="Daily">Daily</option>
<option value="Weekly">Weekly</option>
<option value="Monthly">Monthly</option>
</select>
</td>
</tr>
<tr>
<th align="right">Notify</th>
<td><input type="number" id="notify-field" required></td>
</tr>
<tr>
<th align="left"><button id="submit-data">Save</button></th>
<th align="right"><button id="close-modal">Cancel</button></th>
</tr>
</table>
</div>
</div>
</div>
<div class="delete-modal-overlay" id="delete-modal-overlay">
<div class="parentDisable"> <!-- add new div here -->
<div class="delete-modal-content" id="delete-modal-content">
<table>
<tr>
<th colspan="2">Are you sure you want to delete</th>
</tr>
<tr>
<th align="left"><button id="confirm-delete">Delete</button></th>
<th align="right"><button id="cancel-delete">Cancel</button></th>
</tr>
</table>
</div>
</div>
</div>
1条答案
按热度按时间6ie5vjzr1#
有一个修复,更新代码以上添加css parentDisable添加div内模态覆盖和删除模态覆盖