【问题标题】:Zend Form and jQueryZend 表单和 jQuery
【发布时间】:2014-08-04 20:54:27
【问题描述】:

有以下注册表

<?php 
    $form = $this->form;
    if(isset($form)) $form->prepare();
    $form->setAttribute('action', $this->url(NULL,
    array('controller' => 'register', 'action' => 'process')));
    $form->setAttribute('method', 'post');
    echo $this->form()->openTag($form);
?>
<dl class="form-signin">
    <dd><?php
        echo $this->formElement($form->get('name_reg'));
        echo $this->formElementErrors($form->get('name_reg'));
?></dd>

<div class="alert alert-danger alert-block fade in" id="emailCheck">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    <p>Invalid email format</p>
</div><!-- end alert -->
<dd><?php
    echo $this->formElement($form->get('email_reg'));
    echo $this->formElementErrors($form->get('email_reg'));
?></dd>

<div class="alert alert-danger alert-block fade in" id="passwordCheck">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    <p></p>
</div><!-- end alert -->
<dd><?php
    echo $this->formElement($form->get('password_reg'));
    echo $this->formElementErrors($form->get('password_reg'));
?></dd>

<dd><?php
    echo $this->formElement($form->get('confirm_password_reg'));
    echo $this->formElementErrors($form->get('confirm_password_reg'));
?></dd>
<br>
<dd><?php
    echo $this->formElement($form->get('send_reg'));
    echo $this->formElementErrors($form->get('send_reg'));
?></dd>

<?php echo $this->form()->closeTag() ?>

在寄存器的布局中添加了 jQuery 库和 script.js,使用:

<?php echo $this->headScript()
    ->prependFile($this->basePath() . '/js/jquery-1.8.2.min.js')
      ->prependFile($this->basePath() . '/js/script.js')
; ?>

script.js 的结构:

$( document ).ready(function() {
    $("#btnRegister").click( function() {
        $("#email").css("border-color", "");
        $("#password").css("border-color", "");

        var email = $("#email").val();
        var password = $("#password").val();
        var confirm_password = $("#confirm_password").val();
        $("#Register").submit( function() {
           return false;    
        });
        if((/([\w\-]+\@[\w\-]+\.[\w\-]+)/.test(email)) != true) {
            $("#email").css("border-color", "red");
            $("#emailCheck").slideDown();
        } else if(password.length < 6) {
            $("#password").css("border-color", "red");
            $("#passwordCheck").text("Password must be at least 6 characters long");
            $("#passwordCheck").slideDown();
        } else if ((password == confirm_password) != true) {
            $("#password").css("border-color", "red");
            $("#passwordCheck").text("Password doesn't match");
            $("#passwordCheck").slideDown();
        } else if((/((?=.*[0-9])(?=.*[A-Z]))/gm.test(password)) != true) {
            $("#password").css("border-color", "red");
            $("#passwordCheck").text("Password must contian at least one digit and upper case");
            $("#passwordCheck").slideDown();
        }   else  { 
         $.post( $("#Register").attr("action"),
                 $("#Register :input").serializeArray(),
                 function(info) {
                   clear();
                 });
         location.href = "auth";
      } 
    });
    function clear() {
        $("#Register :input").each( function() {
              $(this).val("");
        });
    }
});

问题

以下脚本应该通过单击 ID 为 #btnRegister 的按钮(即“send_reg”元素)不提交 ID 为 #Register 的标准表单并执行以下操作:

  1. 检查电子邮件格式,以防将输入电子邮件的边框颜色设置为红色并向下滑动 ID 为 #emailCheck 的 div。
  2. 检查密码长度是否至少为 6 个字符,并且至少包含 1 个数字和 1 个大写字母。还要检查密码和 cofirm_password 是否相同。相反,将 Password 设为红色边框颜色,然后将 ID 为 #passwordCheck 的 div 向下滑动,并带有相应的文本。

我在简单的 php 项目中尝试了所有这些并且它工作了,但是我将所有这些都包含在 Zend Framework 中并且我不工作。任何想法我如何检查注册视图是否已归档或如何以另一种方式包含 .js 文件。因为当我在 Chrome 中检查网页时,有 script.js。

已修复 改变了

->prependFile($this->basePath() . '/js/script.js')

->appendFile($this->basePath() . '/js/script.js')

【问题讨论】:

  • 您的 PHP 日志告诉您什么?您可以在日志中发布错误吗?你的 java 脚本控制台有什么错误吗?
  • 我用的是xampp,你的意思是这个文件“\xampp\apache\logs\error.log”?
  • 从控制台我得到这个错误:**Uncaught ReferenceError: $ is not defined **
  • \xampp\apache\logs\error.log 文件可能会给您带来 apache 错误以及 PHP 错误,这可能会使情况有些混乱。查看您的 php.ini 文件以配置您的错误文件。见:cyberciti.biz/tips/php-howto-turn-on-error-log-file.html
  • PHP 将所有错误放入 error_log = "C:\xampp\php\logs\php_error_log" 并且 "display_errors" 从 php.ini 开启,但我今天没有任何错误,那将有一些与我的项目类似的东西。在 java 脚本控制台中发现一个错误,仅此而已。

标签: php jquery zend-framework2


【解决方案1】:

您需要在 jQuery 之后包含 script.js。目前您之前已将其包含在内,因此会出现错误。

最简单(也是最合乎逻辑)的解决方法是切换到 appendFile() 而不是 prependFile()`:

echo $this->headScript()
          ->appendFile($this->basePath() . '/js/jquery-1.8.2.min.js')
          ->appendFile($this->basePath() . '/js/script.js'); 

【讨论】:

  • 在您回答之前就想通了,但还是谢谢您。刚刚为 script.js 切换了 appendFile。并且工作完美。
  • 无论如何你都可以使用 InlineScript
猜你喜欢
  • 1970-01-01
  • 2010-10-14
  • 2013-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
相关资源
最近更新 更多