2

我的模块中有两个字段称为:rules_name_c一个是文本字段,rules_author_c一个是相关字段。

这些字段不是必填字段,但是当我在rules_name_c字段中输入数据时,我想输入数据,因此rules_author_c必须填写才能完成记录。

我尝试了以下方法:

<?php

require_once('include/MVC/View/views/view.edit.php');
/*
 * replace UT_Blogs with the module your are dealing with 
 */

class conn_connectionViewEdit extends ViewEdit {

    public function __construct() {
        parent::ViewEdit();
        $this->useForSubpanel = true; // this variable specifies that these changes should work for subpanel
        $this->useModuleQuickCreateTemplate = true; // quick create template too
    }

    function display() {

        global $mod_strings;
        //JS to make field mendatory 
        $jsscript = <<<EOQ
                   <script>
                       // Change rules_author_c to the field of your module
                       $('#rules_name_c').change(function() {
                            makerequired(); // onchange call function to mark the field required
                       });
                     function makerequired()
                     {
                        var status = $('#rules_name_c').val(); // get current value of the field 
                         if(status != ''){ // check if it matches the condition: if true,
                                addToValidate('EditView','rules_author_c','varchar',true,'{$mod_strings['LBL_RULES_AUTHOR']}');    // mark rules_author_c field required
                                $('#description_label').html('{$mod_strings['LBL_RULES_AUTHOR']}: <font color="red">*</font>'); // with red * sign next to label
                            }
                            else{
                                removeFromValidate('EditView','rules_author_c');                        // else remove the validtion applied
                                $('#rules_author_c_label').html('{$mod_strings['LBL_RULES_AUTHOR']}: '); // and give the normal label back 
                            }
                    }
                    makerequired(); //Call at onload while editing a Published blog record
                </script>
EOQ;
        parent::display();
        echo $jsscript;     //echo the script
    }

}
4

1 回答 1

1

您最好创建一个调用函数,然后添加您自己的自定义验证。将您的 JavaScript 更改为如下内容:

  addToValidateCallback(
     'EditView', // Form Name
     'rules_author_c', // Field Name
     'relate', // Field type
     true, // Is required
     "Please do what I need.", // Message
     function() { // Callback
          var is_valid = true;
          // Do custom validation
          if($('#rules_name_c').val() != '' && $('#rules_author_c').val() == '') {
            is_valid = false;
          }
         return is_valid;
     });
  });
于 2015-12-09T12:52:54.380 回答