【问题标题】:issue in validation a form a in zend在zend中验证表单a的问题
【发布时间】:2013-07-29 12:16:17
【问题描述】:

我正在使用 zend 表单并尝试验证客户端验证。我的代码是这样的:

$this->addElement('text', 'email', array(
    'label' => 'Email:',
    'required' => true,
    'class' => 'span12',
    'attribs' => array(
        'required' => true,
        'pattern'=> "^[A-Za-z0-9._]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$"
    )
));

$this->setAttrib('id', 'lead_form_creation');
$this->addElement('text', 'name', array(
    'label' => 'Name:',
    'required' => true,
    'class' => 'span12',
    'attribs' => array(
        'required' => true,
        'pattern' => '[a-zA-Z]{4,}'
    )

));
$this->addElement('text', 'phone', array(
    'label' => 'Phone:',
    'required' => true,
    'class' => 'span12',
    'attribs' => array(
        'required' => true,
        'pattern' => '\d{4,}'
        )
    ));

通过以上三个字段,我可以创建一个表单。此外,我的代码也在验证以上三个字段。但是,每当我写一些有效的电子邮件地址并按 Tab 时,名称字段和电话号码字段都会同时显示为红色。但从用户的角度来看,它应该只是名称字段。然后,如果名称未验证并按 Tab,则名称字段和电话字段应显示错误。 请让我知道我是否必须在 attrbs 属性或其他任何地方提及任何内容? 提前致谢。

【问题讨论】:

    标签: forms validation zend-framework


    【解决方案1】:

    代码中的错字(属性应该是属性):

    $this->addElement('text', 'email', array(
        'label' => 'Email:',
        'required' => true,
        'class' => 'span12',
        'attributes' => array(
            'required' => true,
            'pattern'=> "^[A-Za-z0-9._]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$"
        )
    ));
    
    $this->setAttrib('id', 'lead_form_creation');
    $this->addElement('text', 'name', array(
        'label' => 'Name:',
        'required' => true,
        'class' => 'span12',
        'attributes' => array(
            'required' => true,
            'pattern' => '[a-zA-Z]{4,}'
        )
    ));
    
    $this->addElement('text', 'phone', array(
        'label' => 'Phone:',
        'required' => true,
        'class' => 'span12',
        'attributes' => array(
            'required' => true,
            'pattern' => '\d{4,}'
            )
      ));
    

    【讨论】:

    • 但是如果我将属性更改为属性,那么它根本就没有验证。
    • 您在此处设置的属性不是真正的表单验证,而是 HTML5 元素 (w3schools.com/tags/att_input_pattern.asp),因此请确保您使用的是正确的文档类型和支持这些的浏览器。对于服务器端验证使用,例如,正则表达式(另见stackoverflow.com/questions/7068376/…
    • 如果我使用属性,那么它会生成: 这个 id 只用于电子邮件,同样的事情是发生在其他领域。
    • 您的电子邮件地址验证模式不正确,但我建议为此使用 HTML5 电子邮件字段类型(将类型“文本”替换为“电子邮件”)w3schools.com/html/tryit.asp?filename=tryhtml5_input_type_email
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    相关资源
    最近更新 更多