javascript - 在 php 或 javascript 中单击按钮后禁用该按钮
问题描述
我正在尝试用 PHP 中的字母按钮制作一个刽子手游戏。问题是我希望在单击和处理后禁用作为字母输入的按钮,但是我尝试过的所有解决方案都不起作用,我需要已单击的字母禁用,而其余的保持活动状态直到下一个会话。代码如下,有什么想法吗?
<?php
function plateup (){
$plate = '';
for ($i=0; $i < strlen($_SESSION['mystery']) ; $i++) {
array_push($_SESSION['mysteryletters'],$_SESSION['mystery'][$i]);
if (in_array($_SESSION['mystery'][$i],$_SESSION['guesses'])) {
$plate = $plate.$_SESSION['mystery'][$i].' ';
} else {
$plate = $plate.'_ ';
}
}
echo '<h2>'.$plate.'</h2>';
}
if (($_SESSION['numwrong'] < 5)&&(!$_SESSION['won'])){
?>
<form name="drawer" action="./" method="post">
<input type="submit" class="letter" name="letter" value="A">
<input type="submit" class="letter" name="letter" value="B">
<input type="submit" class="letter" name="letter" value="C">
<input type="submit" class="letter" name="letter" value="D">
<input type="submit" class="letter" name="letter" value="E">
<input type="submit" class="letter" name="letter" value="F">
<input type="submit" class="letter" name="letter" value="G">
<input type="submit" class="letter" name="letter" value="H">
<input type="submit" class="letter" name="letter" value="I">
<input type="submit" class="letter" name="letter" value="J">
<input type="submit" class="letter" name="letter" value="K">
<input type="submit" class="letter" name="letter" value="L">
<input type="submit" class="letter" name="letter" value="M">
<input type="submit" class="letter" name="letter" value="N">
<input type="submit" class="letter" name="letter" value="O">
<input type="submit" class="letter" name="letter" value="P">
<input type="submit" class="letter" name="letter" value="Q">
<input type="submit" class="letter" name="letter" value="R">
<input type="submit" class="letter" name="letter" value="S">
<input type="submit" class="letter" name="letter" value="T">
<input type="submit" class="letter" name="letter" value="U">
<input type="submit" class="letter" name="letter" value="V">
<input type="submit" class="letter" name="letter" value="W">
<input type="submit" class="letter" name="letter" value="X">
<input type="submit" class="letter" name="letter" value="y">
<input type="submit" class="letter" name="letter" value="z">
</form>
<?php
} else {
?>
<form name="redrawer" action="" method="post">
<input type="submit" name="newgame" value="New Game">
</form>
<?php
}
if (isset($_POST['letter'])) {
if (strlen($_POST['letter'])>0){
$letter = ($_POST['letter'][0]);
if (!in_array($letter, $_SESSION['guesses'])){
array_push($_SESSION['guesses'],$letter);
}
if (!in_array($letter, $_SESSION['mysteryletters'])){
$_SESSION['numwrong'] += 1;
}
}
} else {
$_SESSION['numwrong'] = 0;
$_SESSION['guesses'] = [];
$_SESSION['won'] = false;
$lines = file('words.txt');
$_SESSION['mystery'] = trim($lines[array_rand($lines)]);
$_SESSION['mysteryletters'] = array_unique(str_split($_SESSION['mystery']));
}
echo '<p>Guessed: [ '.implode(" ",$_SESSION['guesses']).' ]';
plateup();
?>
解决方案
禁用 HTML 元素需要在 FRONTEND 上进行,PHP 不能这样做,因为它只在 BACKEND 上工作。您可以让 JS 禁用前端部分,并可能将其保存last pressed button
在 PHP Session 中,因此它不能再在后台使用..
我相信还有其他方法,具体取决于您确切需要发生的事情。
推荐阅读
- mongodb - Mongoose Bulkwrite:nModified 的触发器
- kendo-ui - 如何为十六进制颜色代码自定义 Kendo UI 编辑器?
- ssms - 是否不再可以使用 SSMS 编写用户和权限脚本?
- sql - postgresql 查询结果使用 where 条件另一个查询
- php - 在 Codeigniter4 中集成 Microsoft WindowsAzure 存储 Blob
- reactjs - Redux 数组有时为空
- c++ - 当 unique_ptr 在向量中时,对 std::unique_ptr<> 拥有的对象的引用/ptr 是否安全?
- r - 如何根据字符串过滤行,但前提是字符串出现多次
- excel - VBA代码在列中查找字符串,然后按空格将字符串拆分到偏移位置
- reactjs - Firebase 动态链接不适用于带有电容器的 ios