gpt4 book ai didi

php - 在 2 个 div 之间传输(添加/删除)php 数组值

转载 作者:行者123 更新时间:2023-11-28 09:44:46 24 4
gpt4 key购买 nike

我有一个普通的 div,有一个可以手动编辑的输入文本框。我想从另一个具有一组 php 数组值(来自查询)的 div 添加/删除 php 值。每个值都有一个 [添加] 或 [删除] 按钮,该按钮根据天气相应的 php 值是否存在于输入文本字段中。

所以,基本上如果文本框是空的,那么所有按钮都会是[添加],点击它会将相应的php值添加到文本框,然后变成[删除]按钮。同样,任何[删除]按钮都会从文本框中删除相应的php值,然后更改为[添加]按钮。

EXAMPLE:
$values = array("Mike", "James", "Jerry", "Tom");
input type="text"

如果我手动对文本框进行任何更改或在其中输入一些已知的 php 值(用分号分隔):

James;Mike;Hyde;Jerry;

另一个 div 将动态搜索 php 数组的所有值,并为存在的值添加 [Remove] 按钮,为文本框中未找到的值添加 [Add] 按钮。

詹姆斯[删除]
迈克[删除]
汤姆 [添加]
杰瑞[删除]

Notice #1: Here, 'Tom' is the only value that do not exist in the textbox, so it has a [Remove] button.
Notice #2: Also, 'Hyde' is not known as a value of the php array, so it has neither an [Add] nor a [Remove] button.

<小时/>

编辑:

我已经做的基本上是回显 php 查询中的所有数组值,并为每个值附加一个 [Add] 按钮(因为默认情况下文本框为空)
我使用的自定义 js 函数类似于:

$("#textbox").val(function(i, val) { return val.replace(phparrayvalue, ''); });

但是,为了动态更改[添加]和[删除]之间的按钮,我必须始终保留 php 数组(AJAX 请求在textchange 上获取 php 值会很慢)。

我认为如果我可以传递 php 数组并将其转换为 javascript 数组 onload,问题就会消失。之后就可以很容易地将保存的js数组与ontextchange上的文本框值进行比较,并根据结果更改按钮。

我希望它很清楚,并且有人可以帮助编写 JavaScript 代码。
谢谢

最佳答案

如果我正确理解你的问题,这可能会有所帮助

预览:

enter image description here

创建简单的 html 文档进行测试..

测试.html

<!DOCTYPE html>
<html>
<head>
<title>Test Add/Remove</title>
<script type="text/javascript" src="adddel.js"></script>
<style type="text/css">
<!--
body { font-family: tahoma, verdana, arial; }
.btn { color: #0000ff; font-size: 12px; cursor: pointer; }
.div1 { width: 200px; height: 200px; background-color: #ffffee; border: dashed 1px #494949; position: absolute; left: 50px; top: 50px; padding: 10px; }
.div2 { width: 200px; height: 200px; background-color: #ffffee; border: dashed 1px #494949; position: absolute; left: 280px; top: 50px; padding: 10px; font-size: 14px; }
.myinput { width: 194px; font-weight: bold; font-size: 14px; border: solid 1px #000000; padding: 3px; }
-->
</style>
</head>
<body>
<div id="divinput" class="div1"></div>
<div id="divvalues" class="div2"></div>
<script type="text/javascript">
<!--
// echo next line from php code
myArray = 'Mike,James,Jerry,Tom';

jsStart(myArray, 'divinput', 'divvalues');
-->
</script>
</body>
</html>

如您所见,此 html 包含 标题、指向外部 JavaScript 文件的链接以及 HEAD 中页面元素的一些样式 部分,以及 BODY 部分中的两个 DIV 和一些简单的页面 JavaScript

您所要做的就是从 PHP 代码创建 JavaScript 变量 myNames。我使用了您在问题中提到的相同名称,因此我的行如下所示:

myArray = 'Mike,James,Jerry,Tom';

在 PHP 中创建逗号分隔列表并在此处回显它。

在该行后面,我调用了函数 jsStart(),该函数在外部 JavaScript 文件 adddel.js 中定义。

让我们看看该文件是什么样的

adddel.js

var name = Array();

// page preparation
function jsStart(a, div1id, div2id) {
// create array of names
name = a.split(',');
// create div1 html
html = '<input type="text" name="myedit" id="myedit" class="myinput" value="" onchange="changeText()" onkeyup="changeText()">';
document.getElementById(div1id).innerHTML = html;
// create div2 html
html = '';
for (i=0; i<name.length; i++) {
if (name[i].trim() != '') {
if (html != '') html += '<br />';
// name
html += '&bull; <b>' + name[i] + '</b> ';
// button
html += ' <span class="btn" id="btn' + i + '" onclick="btnClick(' + i + ')">[Add]</span>';
}
}
if (html == '') html = '&nbsp;';
document.getElementById(div2id).innerHTML = html;
changeText();
}

// fires on input-text change
function changeText() {
edl = document.getElementById('myedit').value.trim().split(';');
for (i=0; i<name.length; i++) {
btnText = '[Add]';
for (j=0; j<edl.length; j++) {
ne = name[i].trim().toLowerCase();
nl = edl[j].trim().toLowerCase();
if (ne == nl) {
btnText = '[Remove]';
break;
}
}
document.getElementById('btn' + i).innerHTML = btnText;
}
}

// add/remove name from text-input
function btnClick(id) {
ne = name[id].trim().toLowerCase();
edl = document.getElementById('myedit').value.trim().split(';');
newed = '';
found = false;
for (i=0; i<edl.length; i++) {
nl = edl[i].trim().toLowerCase();
if (nl != '') {
if (nl != ne) newed += edl[i].trim() + ';';
else found = true;
}
}
if (!found) newed+=name[id]+';'
document.getElementById('myedit').value = newed;
changeText();
}

将这两个文件放在同一目录中,然后从浏览器中打开 test.html 文件。如果您做得正确,您将在我的帖子顶部看到类似图片的内容。

注意:文本输入中的项目不区分大小写,并且允许在名称周围添加空格。

这意味着文本

"Mike;John;Sam; BRian"

相同
"   mike ; john;Sam;Brian "

现在编辑此代码并使其满足您的需求。就这么简单。

希望这有帮助

关于php - 在 2 个 div 之间传输(添加/删除)php 数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11924587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com