【问题标题】:zend, remove require=true from jqueryzend,从 jquery 中删除 require=true
【发布时间】:2014-11-21 12:23:54
【问题描述】:

I need to change the requirment of an input when a select change. 我的表格上有这个声明:

$name = $this->addElement('text', 'name', array(
                'required' => true,
                'label' => 'Name',
                'filters'    => array('StringTrim'),
            ));

我尝试在 phtml 文件(视图)中使用 jquery:

$('#select').change(function(){
    $('#name').prop('disabled', true);
})

但不起作用,继续需要输入。 任何人都可以帮助我吗?

斯蒂法尼亚

【问题讨论】:

    标签: jquery zend-framework input onchange required


    【解决方案1】:

    您必须从 PHP 端删除 required。

    我可以建议你这样做:

    1. 在您的表单中,添加一个隐藏元素,如下所示:

      $change_select = new Zend_Form_Element_Hidden('change_select');
       $this->addElement($change_select);
      
    2. 在你的 javascript 中:

      $('#select').change(function(){
          $("#change_select").val("change");
      })
      
    3. 在您的控制器中,尝试如下操作:

      // $form  is your form in your controller like : 
      // this $form = new Application_Form_Album();
      
      if ($this->getRequest()->isPost()) {
          $formData = $this->getRequest()->getPost();
          if ($formData['change_select'] == 'change'){
              $form->getElement('name')->setRequired(false);
          }
          if ($form->isValid($formData)) {
              ....
      

    【讨论】:

    • 它部分工作,。看起来不是必需的,但系统继续显示错误消息并且不应用要求
    • 没有错误,只是系统看不到规则继续假装输入
    • 很好奇,我试了一下,它对我有用。添加调试消息以查看 PHP 端的 $formData['change_select'] 值和 js 端的 $("#change_select")
    • 太好了,我放心了! :) 感谢您的回归。祝你好运。
    • 你能验证答案吗?
    【解决方案2】:

    尝试删除required属性

    $('#select').change(function(){
        $('#name').removeProp('required');
    })
    

    【讨论】:

    • 能否分享一下html代码。如果可能,请与您的问题陈述分享 jsfiddle 链接。
    猜你喜欢
    • 2013-10-14
    • 2012-12-30
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多