用 n 行更改一行的值 (jquery, php, mysql)
Changing the value of a line with n lines (jquery, php, mysql)
当我点击 "lock" 时,我只希望我点击的行将状态更改为 true 并锁定锁。当我点击 "unlock" 时,我只想要我点击的行将状态更改为 false 并释放锁定。
在我当前的代码中:
当我点击第一行的锁时,你的状态改变了,锁也改变了,但其他行的锁也改变了。我需要帮助来解决这个问题。
还有一个我觉得应该用的东西ajax。当第一次生成并执行 table 时,所有状态都将为假,锁 "open" 将行标记为锁定(锁定)状态将使状态为真,我需要发送这个 "true" pro 数据库并通过 php 脚本保存它,以便重新加载我更改的页面状态继续保存。
我正在使用以下插件上下文菜单:
为了更好的可视化,我把我的代码放在了 pastebin 中。
change.js
$(function(){
$.contextMenu({
selector: '.context-menu-one',
items: {
"block": {
name: "Lock",
icon: "edit",
callback: function(key, options){
var m = $(this).text();
var set = block(m, $(this)); // passando - this - como parâmetro de função
}
},
"sep1": "----------",
"unblock": {
name: "Unlock",
icon: "cut",
callback: function(key, options){
var m = $(this).text();
var set = unblock(m, $(this)); // passando - this - como parâmetro de função
}
}
}
});
});
function block(x, thisObj)
{
if (x === "false")
x = "true";
thisObj.html(x);
$(".lock1").html('<i class="fa fa-unlock" aria-hidden="true"></i>');
}
function unblock(x, thisObj)
{
if (x === "true")
x = "false";
thisObj.html(x);
$(".lock1").html('<i class="fa fa-lock" aria-hidden="true"></i>');
}
network.php
<?php
$con = mysqli_connect("localhost", "root", "", "mydb2");
?>
<ul class="breadcrumb">
<li><a href="#">Ir para</a></li>
<li><a href="#">dashboard</a></li>
</ul>
<div class="page-content-wrap">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<div class="page-title">
<h2><span class="fa fa-hand-spock-o"></span> - Virtual Private Network</h2>
<p id="test">abc</p>
</div>
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table datatable table-striped">
<thead>
<tr>
<th>Common Name</th>
<th>Real Address</th>
<th>Virtual Address</th>
<th>Bytes Sent</th>
<th>Bytes Received</th>
<th>Since</th>
<th>Status</th>
<th>Blocked</th> <!--inserir a imagem de cliente bloqueado ou não -->
</tr>
</thead>
<tbody>
<tr>
<td class="context-menu-one">orion</td>
<td class="context-menu-one">177.43.212.110</td>
<td class="context-menu-one">172.16.191.145</td>
<td class="context-menu-one">872199</td>
<td class="context-menu-one">860412</td>
<td class="context-menu-one">Wed May 25 07:22:52 2016</td>
<td class="context-menu-one">false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr>
<td class="context-menu-one">elgin</td>
<td class="context-menu-one">189.10.58.244</td>
<td class="context-menu-one">172.16.6.210</td>
<td class="context-menu-one">301365</td>
<td class="context-menu-one">250459</td>
<td class="context-menu-one">Wed May 25 07:01:37 2016</td>
<td class="context-menu-one">false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr>
<td class="context-menu-one">databits</td>
<td class="context-menu-one">187.17.235.203</td>
<td class="context-menu-one">172.16.136.217</td>
<td class="context-menu-one">459833</td>
<td class="context-menu-one">409771</td>
<td class="context-menu-one">Wed May 25 06:09:01 2016</td>
<td class="context-menu-one">false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr>
<td class="context-menu-one">proficio</td>
<td class="context-menu-one">179.213.177.117</td>
<td class="context-menu-one">172.16.196.93</td>
<td class="context-menu-one">1083595</td>
<td class="context-menu-one">945154</td>
<td class="context-menu-one">Tue May 24 21:36:21 2016</td>
<td class="context-menu-one">false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
?>
我的table:
"lock"选项:
很有趣!
首先,我将 context-menu-one
class 的位置更改为 parent 的位置。
并通过以下方式将操作委托给 td
s:selector: '.context-menu-one td'
.
因为它使 "watch" 的元素更少 jQuery... 并清理代码。
然后...我修改了你items
object中的回调函数。
我使用 .parent()
、siblings()
和 prev()
来定位所有正确的元素。
HTML:
<ul class="breadcrumb">
<li><a href="#">Ir para</a></li>
<li><a href="#">dashboard</a></li>
</ul>
<div class="page-content-wrap">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<div class="page-title">
<h2><span class="fa fa-hand-spock-o"></span> - Virtual Private Network</h2>
<p id="test">abc</p>
</div>
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table datatable table-striped">
<thead>
<tr>
<th>Common Name</th>
<th>Real Address</th>
<th>Virtual Address</th>
<th>Bytes Sent</th>
<th>Bytes Received</th>
<th>Since</th>
<th>Status</th>
<th>Blocked</th> <!--inserir a imagem de cliente bloqueado ou não -->
</tr>
</thead>
<tbody>
<tr class="context-menu-one row">
<td>orion</td>
<td>177.43.212.110</td>
<td>172.16.191.145</td>
<td>872199</td>
<td>860412</td>
<td>Wed May 25 07:22:52 2016</td>
<td>false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr class="context-menu-one row">
<td>elgin</td>
<td>189.10.58.244</td>
<td>172.16.6.210</td>
<td>301365</td>
<td>250459</td>
<td>Wed May 25 07:01:37 2016</td>
<td>false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr class="context-menu-one row">
<td>databits</td>
<td>187.17.235.203</td>
<td>172.16.136.217</td>
<td>459833</td>
<td>409771</td>
<td>Wed May 25 06:09:01 2016</td>
<td>false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr class="context-menu-one row">
<td>proficio</td>
<td>179.213.177.117</td>
<td>172.16.196.93</td>
<td>1083595</td>
<td>945154</td>
<td>Tue May 24 21:36:21 2016</td>
<td>false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
JavaScript:
$(function(){
$.contextMenu({
selector: '.context-menu-one td',
items: {
"block": {
name: "Lock",
icon: "edit",
callback: function(key, options){
console.log("HERE");
if ($(this).parent().hasClass("row")){
console.log("HERE IF");
thisRowPadlock = $(this).siblings(".lock1");
var m = $(this).siblings(".lock1").prev().text();
console.log(m);
var set = block(m, thisRowPadlock, $(this).siblings(".lock1").prev()); // passando - this - como parâmetro de função
}
}
},
"sep1": "----------",
"unblock": {
name: "Unlock",
icon: "cut",
callback: function(key, options){
console.log("THERE");
if ($(this).parent().hasClass("row")){
thisRowPadlock = $(this).siblings("lock1");
var m = $(this).siblings(".lock1").prev().text();
console.log(m);
var set = unblock(m, thisRowPadlock, $(this).siblings(".lock1").prev()); // passando - this - como parâmetro de função
}
}
}
}
});
});
function block(x, padlock, thisObj)
{
console.log("Function block");
if (x === "false")
x = "true";
thisObj.html(x);
$(padlock).html('<i class="fa fa-unlock" aria-hidden="true"></i>');
}
function unblock(x, padlock, thisObj)
{
console.log("Function unblock");
if (x === "true")
x = "false";
thisObj.html(x);
$(padlock).html('<i class="fa fa-lock" aria-hidden="true"></i>');
}
还有一个 working Fiddle(缺少一些 CSS,抱歉)。
当我点击 "lock" 时,我只希望我点击的行将状态更改为 true 并锁定锁。当我点击 "unlock" 时,我只想要我点击的行将状态更改为 false 并释放锁定。
在我当前的代码中:
当我点击第一行的锁时,你的状态改变了,锁也改变了,但其他行的锁也改变了。我需要帮助来解决这个问题。
还有一个我觉得应该用的东西ajax。当第一次生成并执行 table 时,所有状态都将为假,锁 "open" 将行标记为锁定(锁定)状态将使状态为真,我需要发送这个 "true" pro 数据库并通过 php 脚本保存它,以便重新加载我更改的页面状态继续保存。
我正在使用以下插件上下文菜单: 为了更好的可视化,我把我的代码放在了 pastebin 中。
change.js
$(function(){
$.contextMenu({
selector: '.context-menu-one',
items: {
"block": {
name: "Lock",
icon: "edit",
callback: function(key, options){
var m = $(this).text();
var set = block(m, $(this)); // passando - this - como parâmetro de função
}
},
"sep1": "----------",
"unblock": {
name: "Unlock",
icon: "cut",
callback: function(key, options){
var m = $(this).text();
var set = unblock(m, $(this)); // passando - this - como parâmetro de função
}
}
}
});
});
function block(x, thisObj)
{
if (x === "false")
x = "true";
thisObj.html(x);
$(".lock1").html('<i class="fa fa-unlock" aria-hidden="true"></i>');
}
function unblock(x, thisObj)
{
if (x === "true")
x = "false";
thisObj.html(x);
$(".lock1").html('<i class="fa fa-lock" aria-hidden="true"></i>');
}
network.php
<?php
$con = mysqli_connect("localhost", "root", "", "mydb2");
?>
<ul class="breadcrumb">
<li><a href="#">Ir para</a></li>
<li><a href="#">dashboard</a></li>
</ul>
<div class="page-content-wrap">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<div class="page-title">
<h2><span class="fa fa-hand-spock-o"></span> - Virtual Private Network</h2>
<p id="test">abc</p>
</div>
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table datatable table-striped">
<thead>
<tr>
<th>Common Name</th>
<th>Real Address</th>
<th>Virtual Address</th>
<th>Bytes Sent</th>
<th>Bytes Received</th>
<th>Since</th>
<th>Status</th>
<th>Blocked</th> <!--inserir a imagem de cliente bloqueado ou não -->
</tr>
</thead>
<tbody>
<tr>
<td class="context-menu-one">orion</td>
<td class="context-menu-one">177.43.212.110</td>
<td class="context-menu-one">172.16.191.145</td>
<td class="context-menu-one">872199</td>
<td class="context-menu-one">860412</td>
<td class="context-menu-one">Wed May 25 07:22:52 2016</td>
<td class="context-menu-one">false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr>
<td class="context-menu-one">elgin</td>
<td class="context-menu-one">189.10.58.244</td>
<td class="context-menu-one">172.16.6.210</td>
<td class="context-menu-one">301365</td>
<td class="context-menu-one">250459</td>
<td class="context-menu-one">Wed May 25 07:01:37 2016</td>
<td class="context-menu-one">false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr>
<td class="context-menu-one">databits</td>
<td class="context-menu-one">187.17.235.203</td>
<td class="context-menu-one">172.16.136.217</td>
<td class="context-menu-one">459833</td>
<td class="context-menu-one">409771</td>
<td class="context-menu-one">Wed May 25 06:09:01 2016</td>
<td class="context-menu-one">false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr>
<td class="context-menu-one">proficio</td>
<td class="context-menu-one">179.213.177.117</td>
<td class="context-menu-one">172.16.196.93</td>
<td class="context-menu-one">1083595</td>
<td class="context-menu-one">945154</td>
<td class="context-menu-one">Tue May 24 21:36:21 2016</td>
<td class="context-menu-one">false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
?>
我的table:
"lock"选项:
很有趣!
首先,我将 context-menu-one
class 的位置更改为 parent 的位置。
并通过以下方式将操作委托给 td
s:selector: '.context-menu-one td'
.
因为它使 "watch" 的元素更少 jQuery... 并清理代码。
然后...我修改了你items
object中的回调函数。
我使用 .parent()
、siblings()
和 prev()
来定位所有正确的元素。
HTML:
<ul class="breadcrumb">
<li><a href="#">Ir para</a></li>
<li><a href="#">dashboard</a></li>
</ul>
<div class="page-content-wrap">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<div class="page-title">
<h2><span class="fa fa-hand-spock-o"></span> - Virtual Private Network</h2>
<p id="test">abc</p>
</div>
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table datatable table-striped">
<thead>
<tr>
<th>Common Name</th>
<th>Real Address</th>
<th>Virtual Address</th>
<th>Bytes Sent</th>
<th>Bytes Received</th>
<th>Since</th>
<th>Status</th>
<th>Blocked</th> <!--inserir a imagem de cliente bloqueado ou não -->
</tr>
</thead>
<tbody>
<tr class="context-menu-one row">
<td>orion</td>
<td>177.43.212.110</td>
<td>172.16.191.145</td>
<td>872199</td>
<td>860412</td>
<td>Wed May 25 07:22:52 2016</td>
<td>false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr class="context-menu-one row">
<td>elgin</td>
<td>189.10.58.244</td>
<td>172.16.6.210</td>
<td>301365</td>
<td>250459</td>
<td>Wed May 25 07:01:37 2016</td>
<td>false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr class="context-menu-one row">
<td>databits</td>
<td>187.17.235.203</td>
<td>172.16.136.217</td>
<td>459833</td>
<td>409771</td>
<td>Wed May 25 06:09:01 2016</td>
<td>false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
<tr class="context-menu-one row">
<td>proficio</td>
<td>179.213.177.117</td>
<td>172.16.196.93</td>
<td>1083595</td>
<td>945154</td>
<td>Tue May 24 21:36:21 2016</td>
<td>false</td>
<td class="lock1"><i class="fa fa-unlock" aria-hidden="true"></i></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
JavaScript:
$(function(){
$.contextMenu({
selector: '.context-menu-one td',
items: {
"block": {
name: "Lock",
icon: "edit",
callback: function(key, options){
console.log("HERE");
if ($(this).parent().hasClass("row")){
console.log("HERE IF");
thisRowPadlock = $(this).siblings(".lock1");
var m = $(this).siblings(".lock1").prev().text();
console.log(m);
var set = block(m, thisRowPadlock, $(this).siblings(".lock1").prev()); // passando - this - como parâmetro de função
}
}
},
"sep1": "----------",
"unblock": {
name: "Unlock",
icon: "cut",
callback: function(key, options){
console.log("THERE");
if ($(this).parent().hasClass("row")){
thisRowPadlock = $(this).siblings("lock1");
var m = $(this).siblings(".lock1").prev().text();
console.log(m);
var set = unblock(m, thisRowPadlock, $(this).siblings(".lock1").prev()); // passando - this - como parâmetro de função
}
}
}
}
});
});
function block(x, padlock, thisObj)
{
console.log("Function block");
if (x === "false")
x = "true";
thisObj.html(x);
$(padlock).html('<i class="fa fa-unlock" aria-hidden="true"></i>');
}
function unblock(x, padlock, thisObj)
{
console.log("Function unblock");
if (x === "true")
x = "false";
thisObj.html(x);
$(padlock).html('<i class="fa fa-lock" aria-hidden="true"></i>');
}
还有一个 working Fiddle(缺少一些 CSS,抱歉)。