选择无线电时仅需要文本字段。 ZF2

时间:2015-04-17 14:08:24

标签: forms zend-framework2

在ZF2中,只有在选择单选按钮时才可以要求文本字段吗?像这样......

enter image description here

3 个答案:

答案 0 :(得分:3)

不,ZF2中没有办法解决这个问题,您可以使用jQuery的javascript为此添加验证:

像这样:

$('radio').click(function(){
  if($(this).val() == 'other') {
     $('textfield').prop('required',true);
  }
});

Onclick在客户端事件的任何单选按钮上,zf2在服务器端运行。所以你不能这样做,直到你把数据提交给服务器。

答案 1 :(得分:1)

您可以使用JavaScript库jQuery来执行此操作。

$(document).ready(function() {
   $("#Radiobuttons").click(function() {
       if($(this).attr('id') == "Other") {
            //IF THE ID IS "OTHER"
            $("#foo").show();           
       }  else {
            //IF THE ID IS NOT "OTHER"
            $("#foo").hide();   
       }
   });
});

因为只有这个,用户可以提交表格,文本框为空,勾选复选框,即可使用此脚本。

//CHECK IF THE FORM IS SUBMITTED
if ( $("#foo").css('display') != 'none' ){
    //The text box is visible. Now check if it's empty, with
    //jQuery, PHP, or any other thing you use.
}

答案 2 :(得分:0)

我知道这个问题很老,但也许有人会利用它。 一种方法。

在表单类中从__construct中删除inputFilter方法。然后在你的inputFilter方法中(让它命名为addInputFilter)添加这样的参数:

public function addInputFilter(array $data) {

$inputFilter = new InputFilter();
$this->setInputFilter($inputFilter)


//your inputfilters

if ($data['radiofield'] === 'something') { 
    //add next inputfilters 
} 

//your inputfilters

}

接下来,转到你调用表单的地方(可能是控制器?):

$data = $this->request->getPost();

$form->setInputFilter($form->addInputFilter($data->toArray()));
$form->setData($data);

// next check if form is valid etc. 

多数民众赞成。