如何在PHP中单击复选框时禁用输入?

时间:2017-09-14 19:25:24

标签: javascript php html

我想在单击匿名复选框时禁用输入。 PHP方法是首选。我正在寻找它立即禁用输入。如果需要Javascript,我也可以使用它。

我的尝试:

<form action="#form" method="post" id="form">
                  <div class="form-group">
                    <label for="name">Name:</label>
                    <input type="text" class="form-control" id="name" name="name" id="dis">
                  </div>
                  <div class="form-group">
                    <label for="email">Email:</label>
                    <input type="email" class="form-control" id="email" name="email" required>
                  </div>
                  <div class="checkbox">
                    <label><input type="checkbox" name="check">Anonymous</label>
                  </div>
                  <div class="form-group">
                    <label for="txta">Your Idea</label>
                    <textarea class="form-control" id="txta" rows="3" name="bright" required></textarea>
                  </div>
                  <button type="submit" class="btn btn-default final" style="border-radius:5px;" name="submit">Submit</button>
              </form>

3 个答案:

答案 0 :(得分:0)

看起来你试图混合jquery(javascript),它只是客户端与php(仅限服务器端)。这不行。首先必须了解这两层之间的区别。

当您的网络服务器(包括php)完成提供网页后,他们的工作就完成了。您不能再与PHP交互,除非您执行通常所说的ajax请求(请参阅:$ .post,$ .get,$ .ajax),它允许您联系脚本并发送/拉回数据。一旦将前端发送到浏览器,您必须使用javascript来实现您想要更改的内容。

jQuery是一个很棒的库,首先考虑通过删除猜测来节省大量时间,但如果你不了解任何编程语言的基本语法结构 - 你将花费未来2 - 3年的时间敲打你的就像我10年前做的那样,站在桌子上。我强烈建议您在youtube上观看教程或尽可能多地阅读。

话虽如此,当使用jquery点击时,你不需要php来禁用复选框。你可以把它放在你的HTML中,它应该可以工作。

<script>
    $(document).on('change', 'input[name="check"]', function() {
        $(this).attr('disabled', true).prop('disabled', true); //used .attr for browser compatibility.
    });
</script>

我还应该注意到与原始javascript和jQuery有明显区别。我建议先学习javascript,这样你就可以有效地学习任何满足你需求的js库。 jQuery不是唯一的,但它有一个庞大的社区支持。

如果你不知道从哪里开始,首先要问google:“什么是javascript选择器”,“什么是javascript事件处理程序”,“如何修改事件javascript上的html元素”。这将使您走上正确的道路并做好准备,您将测试搜索关键字的限制。其中很大一部分也是学习术语(如数学)以找到正确的答案。

  • 最后注意:除非包含jQuery,否则jQuery将无效。这是一个使用我在上面展示的例子。

    <html>
    <head>
        <title>My Website</title>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js" type="text/javascript></script>
        <style>h1 { border-bottom:2px solid #CCC; }
        <script>
            $(document).on('change', 'input[name="check"]', function() {
                $(this).attr('disabled', true).prop('disabled', true); //used .attr for browser compatibility.
            });
        </script>
    
    </head>
    <body>
        <h1>Hello world!</h1>
        <div>
            <form>
                <label for="fullname">Full Name:</label>
                <input type="text" name="fullname" value="John Doe"/>
                <br>
                <label for="checkbox">Click Me:</label>
                <input type="checkbox" name="cbox"/>
            </form>
        </div>
    </body>
    

答案 1 :(得分:0)

PHP是一种后端语言,因此,您无法在用户交互时控制UI元素,PHP脚本在加载时在后台运行 - 或者在请求时运行,如果您使用的是AJAX方法。

所以,你有最好的方法是使用Javascript。 Javascript是一个前端(以及后端),允许您在其结束时响应用户的操作。它是基于事件的很多功能,对于那种类型的工作非常有效。

让我们开始吧,好吗?首先在复选框中添加id值,然后您可以将其用于您的应用程序。

&#13;
&#13;
function disableName() {
  document.getElementById("name").disabled = document.getElementById("anon").checked;
}
&#13;
<div class="form-group">
    <label for="name">Name:</label>
    <input type="text" class="form-control" id="name" name="name">
</div>

<div class="checkbox">
    <label><input type="checkbox" name="check" id="anon" onclick="disableName()">Anonymous</label>
</div>
&#13;
&#13;
&#13;

该代码将获得anon复选框,name文本字段会在name被选中时禁用anon

这是Javascript香草;没有你需要查看的外部库。

答案 2 :(得分:0)

PHP应该用于帮助构建DOM,但我不建议使用PHP来尝试和操作DOM。一旦构建了DOM并由浏览器呈现,它就会落入客户端的域中。 PHP是一种服务器端语言,而JavaScript是一种客户端语言,因此我认为更好的方法是使用JavaScript。

我建议您使用jQuery(JavaScript库)来完成此任务。

首先在您的复选框中添加ID:

<input type="checkbox" name="check" id="anonCheck">

然后,我们可以在该特定元素(您的复选框)上侦听点击事件。根据该复选框的状态,我们可以启用或禁用您的输入框。

$('#anonCheck').on('click', function(){

    if ( $('#anonCheck').is(':checked') ) {

        $("#name").prop('disabled', true);

    } else {

        $("#name").prop('disabled', false);

    }

}