【问题标题】:Open div button not working打开 div 按钮不起作用
【发布时间】:2016-10-10 01:46:56
【问题描述】:

我有一个注册表单 div,它应该在单击按钮时打开。在页面加载时默认设置为display: none。在表单提交失败时,我的 JS 文件中有这段代码(它有效,我在默认情况下使用 display: inline-block 设置进行了测试):

$(document).ready(function(){
    <?php 
        if(isset($_POST['signUp']) && count($errors)>0){ 
    ?>
    $   ('#home-sign-up-box').show();
    <?php 
        }elseif(isset($_POST['signUp']) && count($errors)==0){ 
    ?>
        $('#home-sign-up-box').hide();
    <?php 
        }else{
    ?>
        $('#home-sign-up-box').show();
    <?php 
        }
    ?>
});

我也有这段代码,它应该显示 div(在我添加上面的代码之前它已经工作了):

// Log in and sign up buttons
$("#log-in-button").click(function() {
    $("#home-log-in-box").show();
    $("#home-log-in-box").animate({
        "opacity":1
    }, 115);
    $(".body-darken").show();
    $(".body-darken").animate({
        "opacity":0.5
    }, 115);
});

$(".body-darken").click(function() {
    $("#home-log-in-box").animate({
        "opacity":0
    }, 115);
    $("#home-log-in-box").hide();
    $("#home-sign-up-box").hide();
    $(".body-darken").animate({
        "opacity":0
    }, 115);
    $(".body-darken").hide();
});

$("#home-log-in-close").click(function() {
    $("#home-log-in-box").animate({
        "opacity":0
    }, 115);
    $("#home-log-in-box").hide();
    $(".body-darken").animate({
        "opacity":0
    }, 115);
    $(".body-darken").hide();
});

$("#sign-up-button").click(function() {
    $("#home-sign-up-box").show();
    $("#home-sign-up-box").animate({
        "opacity":1
    }, 115);
    $(".body-darken").show();
    $(".body-darken").animate({
        "opacity":0.5
    }, 115);
});

$("#home-sign-up-close").click(function() {
    $("#home-sign-up-box").animate({
        "opacity":0
    }, 115);
    $("#home-sign-up-box").hide();
    $(".body-darken").animate({
        "opacity":0
    }, 115);
    $(".body-darken").hide();
});

它们都在同一个文件中,按照显示的顺序。非常感谢!非常感谢任何帮助!

【问题讨论】:

  • 你在这里将 PHP 注入到 JS 中
  • 我是 Web 开发的新手,这样做是不是一个坏主意?谢谢!
  • 这是不好的做法。我会考虑为此使用ajax。如果这是一个.js 文件,如果它是一个.php 文件,我看不出它是如何工作的,那么你需要不断地进出JS/PHP 标签。
  • 做一件事在 php 会话中获取您的注册错误值。我有同样的问题。 like $_SESSION['signUpError'] = 1;//如果出现注册错误。现在在文档就绪函数中创建一个全局变量 var myGlobalSignUp = '';在文档就绪函数中,通过 php session 变量填充此变量检查 isset 条件和值是否为 1,然后显示您的错误消息。

标签: javascript php jquery css forms


【解决方案1】:

罗素 C.

最重要的一点是,你的js文件是由浏览器解析的,而不是服务器,而浏览器对php一无所知,更不用说$_POST了。您只能在包含的 .js 文件中包含静态 js。如果您需要基于 php 变量编写“动态”js,则必须将其包含在页面的标题部分中,而不是包含在静态 js 文件中。我会做类似以下的事情。 php决定是否包含三个js行:

    <?php 
    $html   =  "<head>\n";
    $html  .=  ...
    $html  .=  "<script>\n";
    $html  .=  "    $(document).ready(function(){\n";

    if(isset( $_POST['signUp'] ) && count($errors)>0) {
        $html  .= "        $('#home-sign-up-box').show();\n";
    }elseif(isset($_POST['signUp']) && count($errors)==0){ 
        $html  .= "        $('#home-sign-up-box').hide();\n";
    }else{
        $html  .= "        $('#home-sign-up-box').show();\n";
    };

    $html  .= "    })\n";
    $html  .= "</script>;\n";
    $html  .=  ...
    $html  .=  "</head>\n";
    $html  .=  "<body>\n";
    $html  .=  ...
    ...
    echo $html;

我对你的页面为什么停止工作的猜测是浏览器点击了你的 js 文件中的所有 php 内容并放弃了。

祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    相关资源
    最近更新 更多