PHP:单击时用文本替换按钮

时间:2016-03-18 23:18:14

标签: php html button onclick

我想制作一个按钮,当点击它时,会显示一个简单的&#34; X&#34;在网站上,与按钮之前的位置完全相同。因此按钮将消失,并替换为&#34; X&#34;。 我的按钮代码很简单 <button onclick="myFunction()">1</button> 我该怎么做呢?它必须是PHP。

不能责怪你们贬低这个问题,因为它可能非常愚蠢,但我对这种语言并不熟悉,而且我正在努力学习。没有在这个网站上找到任何类似的问题。

编辑:我发现其他人的代码完全符合我的要求,但我无法确定他们在此过程中使用的确切行或代码。 http://www.javaist.com/blog/2013/04/29/tictactoe-in-php/comment-page-1/ 他们是怎么做到的?

2 个答案:

答案 0 :(得分:1)

这在PHP中是不可能的。 PHP在服务器端执行,点击按钮之类的交互在客户端执行(通常由客户端执行)。你应该调查Javascript来做这些事情。

答案 1 :(得分:0)

您可以拥有一个正常的表单,无论是页面提交给自己还是另一个页面,它需要一个ID - id =“form” - 并且应该以您自己添加ID的按钮结束:

    <button id="myButton" onclick="myFunction()">1</button>
    </form>

和页面顶部的一段JavaScript就像这样。

此版本会在点击后禁用该按钮并提交页面 - 如果您不希望删除第二个document.getElementById...和提交代码:

    this.form.submit(); 

要完全摆脱按钮,您可以使用以下方式访问其样式属性:

    document.getElementById('myButton').style.display = 'none';

但这不是一个令人放心的用户体验。

    <script language="javascript">
    function myFunction(){
    document.getElementById('myButton').value = 'X';
    document.getElementById('myButton').disabled = true;
    alert('Submit'); // remove this line - just for demo purposes
    this.form.submit();
    }
    </script>

要使按钮完全消失并被X替换,您需要将其放在<span>或其他可以具有ID和innerHTML属性的标记中。然后你可以使用你的按钮周围的跨度 - 例如:

    <span id="myButtonSpan"><button id="myButton" onclick="myFunction()">1</button></span>

并在您的JavaScript中使用它来与X:

交换范围的innerHTML
    document.getElementById('myButton').style.display = 'none';
    document.getElementById('myButtonSpan').innerHTML = 'X';

根据其他评论,这是JavaScript而不是PHP - 您可以在PHP中执行它,因此在通过使用由PHP设置的值的隐藏变量提交之后它的值为X,以便在页面提交时它将以'X'而不是'1'返回

在HTML页面的最顶部 - 现在必须有.php而不是.html扩展名,您可以放置​​:

    <?php
    if(isset($_POST['hidden_input'])){
    $hidden_input_value = 'X';
    }else{
    $hidden_input_value = '1';
    }
    ?>

你的隐藏输入会有:

     <input type="hidden" name="hidden_input" value="<?php echo htmlspecialchars($hidden_input_value); ?>" />

或者你可以让整个按钮成为PHP的一小部分:

    $button = '<button id="myButton" onclick="myFunction()">1</button>';

并使用与上述相同的PHP if(isset($_POST['hidden_input'])){...代码,将$button = 'X';的值设为<?php echo htmlspecialchars($button); ?>,并使用 <input type="hidden" name="hidden_input_count" value="<?php echo htmlspecialchars($hidden_input_count); ?>" /> 显示您想要按钮的位置。然后该功能仅用于提交页面。

同样,根据评论,这不是最“现代”的做事方式,至少可以说 - 我只是添加它来显示与解决方案的PHP“版本”和JavaScript的差异。

如果您保留按钮但只是更改其值,则可以使用另一个隐藏输入的值来计算它提交的次数,并将该值用于按钮,这样您就可以看到多少次它被点击了。这样可以节省您必须使用单个值的会话。

     $hidden_input_count = intval($_POST['hidden_input_count']) + 1;

在你的PHP中你会有

    if(document.getElementById('hidden_input').value == 'X'){
       document.getElementById('myButton').style.display = 'none';
    }

要使按钮不显示根据PHP设置的隐藏输入的值,您可以在JavaScript中获取隐藏输入的值 - 这种类型完成了使用隐藏输入交换JavaScript和PHP之间的值的循环会在JavaScript中出现类似的内容:

htmlspecialchars()

intval()quadMethods qMet =new quadMethods (); qMet.numRoots (...); 用于帮助防止注入攻击,但如果您打算将这些值放入数据库中,则需要更多。

一些老式的蒸汽驱动代码为您提供了多种选择,但有时老歌可能是好东西。