0

我正在使用Zend_Form和表单验证。问题是我使用 jQueryshow()hide()函数隐藏了一些表单字段。

这里的问题是,如果验证发现错误,所有的表单字段都会显示出来,我想要的是保持隐藏和可见字段的状态。知道为什么会这样吗?

如果代码有所不同,请索取,我会立即提供。

Zend_Form代码:

$this->setMethod('post');

$element = new Zend_Form_Element_File("file", array(
    'validators' => array(
        array('Extension', true, 'hume')
    )
));
$element->setDestination("/var/www/testGraduationProject1/public/TempFolder/");
$element->setLabel("Upload");
$this->addElement($element);

$this->addElement('submit', 'Upload', array(
    'ignore' => true,
    'label' => 'Upload',
));

$this->addElement('select', 'Work_Space', array(
    'Multioptions' =>
        array(
            'Hume_Compile_Selection' => 'Please Select Compiling type',
            'Hume_Recourses' => 'Hume Recourses',
            'Hume_Compile' => 'Hume Compile',
        ),
    'id' => 'Work_Space',
    'label' => 'Compiler'
));

$this->addElement('select', 'Editor', array(
    'Multioptions' =>
        array(
            'Choose Editor' => 'Choose Editor',
            'TinyMce' => 'TinyMce',
            'Ymacs' => 'Ymacs',
        ),
    'id' => 'Editor',
    'label' => 'Editor'
));

$this->addElement('text', 'File_Name', array(
    'label' => 'File name',
    'required' => true,
));

$this->addElement('checkbox', 'Advanced_Settings', array(
    'checked' => '0',
    'label' => 'Advanced Settings',
    'id' => 'Advanced_Settings',
));

$this->addElement('textarea', 'Advanced_Options', array(
    'label' => 'Advanced Options',
    'cols' => 50,
    'rows' => 7,
    'id' => 'Advanced_Options',
    'validators' => array(
        array('regex', true, array(
            'pattern' => '/[^[a-zA-Z ><+.,!@#$%^&*()\"\'=]/',
            'messages' => 'Please only numbers without spaces'
            )
        )
    ),
    'attribs' => array('disabled' => 'disabled'),
));

$this->addElement('textarea', 'comment', array(
    'label' => 'Hume Code',
    'required' => true,
    'class' => 'markItUp',
    'id' => 'comment'
));

$this->addElement('checkbox', 'Few_Compile', array(
    'checked' => '1',
    'label' => 'Fewer Results',
    'class' => 'Fewer_Results'
));

$this->addElement('submit', 'Compile_Recourses', array(
    'ignore' => true,
    'label' => 'Compile Recourses',
    'class' => 'Compile_Recourses'
));

$this->addElement('radio', 'Time_Out', array(
    'label' => 'Compiling Time',
    'multiOptions' => array(
         '5' => '5s',
         '10' => '10s',
         '15' => '15s',
     ),
     'value' => array('5s' => '5s')
));

$this->addElement('checkbox', 'Compile_Advanced', array(
    'checked' => '0',
    'label' => "Set Heap Wire Stack Size's",
    'id' => 'Compile_Advanced',
));

$this->addElement('textarea', 'Heap_Size', array(
    'label' => 'Heap Size',
    'Id' => 'Heap-Size',
    'cols' => 5,
    'rows' => 1,
    'validators' => array(
        array('regex', true, array(
            'pattern' => '/[0-9]/',
            'messages' => 'Please only numbers without spaces'
            )
        )
    ),
    'attribs' => array('disabled' => 'disabled'),
));

$this->addElement('textarea', 'Wire_Heap_Size', array(
    'label' => 'Wire_Heap Size',
    'Id' => 'Wire-Heap-Size',
    'cols' => 5,
    'rows' => 1,
    'validators' => array(
        array('regex', false, array(
            'pattern' => '/[0-9]/',
            'messages' => 'Please only numbers without spaces'
            )
        )
    ),
    'attribs' => array('disabled' => 'disabled'),
));

$this->addElement('textarea', 'Stack_Size', array(
    'label' => 'Stack Size',
    'Id' => 'Stack-Size',
    'cols' => 5,
    'rows' => 1,
    'validators' => array(
        array('regex', false, array(
            'pattern' => '/[0-9]/',
            'messages' => 'Please only numbers without spaces'
            )
        )
    ),
    'attribs' => array('disabled' => 'disabled'),
));

$this->addElement('submit', 'Execute_Hume', array(
    'ignore' => true,
    'label' => 'Execute And Compile Hume',
));

$this->addElement('submit', 'Compile_Hume', array(
    'ignore' => true,
    'label' => 'Compile Hume',
));

// die($this->UserHasId);
if ($this->UserHasId) {
    $this->addElement('submit', 'Save_File', array(
        'ignore' => true,
        'label' => 'Save File',
    ));
}

jQueryhide()show()函数

<script type="text/javascript">
    $(document).ready(function(){              
        $("#Advanced_Settings").click(function(){

            if ($('#Advanced_Settings').is(':checked')) {
                $('#Advanced_Options').removeAttr('disabled');
                $('#Few_Compile').attr("disabled", "disabled");

            } else {
                $('#Advanced_Options').attr("disabled", "disabled");
                $('#Few_Compile').removeAttr('disabled');
            }  
        });     
    });
</script>
<script type="text/javascript">
    $(document).ready(function(){              
        $("#Compile_Advanced").click(function(){

            if ($('#Compile_Advanced').is(':checked')) {
                $('#Heap_Size').removeAttr('disabled');
                $('#Wire_Heap_Size').removeAttr('disabled');
                $('#Stack_Size').removeAttr('disabled');


            } else {
                $('#Heap_Size').attr("disabled", "disabled");
                $('#Wire_Heap_Size').attr("disabled", "disabled");
                $('#Stack_Size').attr("disabled", "disabled");

            }  
        });     
    });
</script>

<script type="text/javascript">
    $(document).ready(function(){
        var WorkSpace = $("#Work_Space").val();
        if(WorkSpace == "Hume_Compile_Selection"){

            $('#Time_Out-label').hide();
            $('#Time_Out-element').hide();
            $('#Compile_Advanced-label').hide();
            $('#Compile_Advanced-element').hide();              
            $('#Heap_Size-label').hide();
            $('#Heap_Size-element').hide();
            $('#Wire_Heap_Size-label').hide();
            $('#Wire_Heap_Size-element').hide();
            $('#Stack_Size-label').hide();
            $('#Stack_Size-element').hide();
            $('#Compile_Hume-element').hide();
            $('#Execute_Hume').hide();

            $('#Advanced_Settings-label').hide();
            $('#Advanced_Settings-element').hide();
            $('#Advanced_Options-label').hide();
            $('#Advanced_Options-element').hide();
            $('#Few_Compile-label').hide();
            $('#Few_Compile-element').hide();
            $('#Compile_Recourses-label').hide();
            $('#Compile_Recourses-element').hide();
        }
        $("#Work_Space").change(function(){
            var WorkSpace = $(this).val();
            if(WorkSpace == "Hume_Recourses"){

                $('#Time_Out-label').hide();
                $('#Time_Out-element').hide();
                $('#Compile_Advanced-label').hide();
                $('#Compile_Advanced-element').hide();              
                $('#Heap_Size-label').hide();
                $('#Heap_Size-element').hide();
                $('#Wire_Heap_Size-label').hide();
                $('#Wire_Heap_Size-element').hide();
                $('#Stack_Size-label').hide();
                $('#Stack_Size-element').hide();
                $('#Compile_Hume-element').hide();
                $('#Execute_Hume').hide();

                $('#Advanced_Settings-label').show();
                $('#Advanced_Settings-element').show();
                $('#Advanced_Options-label').show();
                $('#Advanced_Options-element').show();
                $('#Few_Compile-label').show();
                $('#Few_Compile-element').show();
                $('#Compile_Recourses-label').show();
                $('#Compile_Recourses-element').show();
            }else if(WorkSpace == "Hume_Compile"){
                $('#Time_Out-label').show();
                $('#Time_Out-element').show();
                $('#Compile_Advanced-label').show();
                $('#Compile_Advanced-element').show();              
                $('#Heap_Size-label').show();
                $('#Heap_Size-element').show();
                $('#Wire_Heap_Size-label').show();
                $('#Wire_Heap_Size-element').show();
                $('#Stack_Size-label').show();
                $('#Stack_Size-element').show();
                $('#Compile_Hume-element').show();
                $('#Execute_Hume').show();

                $('#Advanced_Settings-label').hide();
                $('#Advanced_Settings-element').hide();
                $('#Advanced_Options-label').hide();
                $('#Advanced_Options-element').hide();
                $('#Few_Compile-label').hide();
                $('#Few_Compile-element').hide();
                $('#Compile_Recourses-label').hide();
                $('#Compile_Recourses-element').hide();
            }else if(WorkSpace == "Hume_Compile_Selection"){
                $('#Time_Out-label').hide();
                $('#Time_Out-element').hide();
                $('#Compile_Advanced-label').hide();
                $('#Compile_Advanced-element').hide();              
                $('#Heap_Size-label').hide();
                $('#Heap_Size-element').hide();
                $('#Wire_Heap_Size-label').hide();
                $('#Wire_Heap_Size-element').hide();
                $('#Stack_Size-label').hide();
                $('#Stack_Size-element').hide();
                $('#Compile_Hume-element').hide();
                $('#Execute_Hume').hide();

                $('#Advanced_Settings-label').hide();
                $('#Advanced_Settings-element').hide();
                $('#Advanced_Options-label').hide();
                $('#Advanced_Options-element').hide();
                $('#Few_Compile-label').hide();
                $('#Few_Compile-element').hide();
                $('#Compile_Recourses-label').hide();
                $('#Compile_Recourses-element').hide();
            }
        });     
    });
</script>

<script type="text/javascript">
    $(document).ready(function(){
        var count = 0;
        var Editor = $("#Editor").val();
        if(Editor == "Choose Editor"){

            $('#File_Name-label').hide();
            $('#File_Name-element').hide();
            $('#File_Name').hide();

            $('#comment-label').hide();
            $('#comment-element').hide();            
            $('#comment').hide();           
            $('#iframe-ymacs').hide();

            $('#ymacs-use').hide(); 
        }
        $("#Editor").change(function(){
            var Editor = $(this).val();
            if(Editor == "TinyMce"){

                $('#File_Name-label').show();
                $('#File_Name-element').show();            
                $('#File_Name').show();

                $('#comment-label').show();
                $('#comment-element').show();            
                $('#comment').show();

                $('#iframe-ymacs').hide();
                $('#ymacs-use').hide(); 

                $('#accordionResizer').show(); 
                if(count != 0){
                    $('#comment').hide();
                    $('#comment_parent').show();
                }

                if(count == 0){
                    $('#comment-label').show();
                    $('#comment-element').show();            
                    $('#comment').show();
                    tinyMCE.init({

                        // General options
                        mode : "exact",
                        elements : "comment",
                        theme : "advanced",
                        skin : "o2k7",
                        skin_variant : "black",
                        plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
                        save_onsavecallback : "saveContent",

                        // Theme options
                        theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull", 
                        theme_advanced_buttons2 : "search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,forecolor,backcolor", 
                        theme_advanced_buttons3 : "hr,removeformat,|,sub,sup,|,charmap,|,print,|,fullscreen,code", 
                        theme_advanced_buttons4 : "styleselect,formatselect,fontselect,fontsizeselect",
                        theme_advanced_toolbar_location : "top", 
                        theme_advanced_toolbar_align : "left", 
                        theme_advanced_statusbar_location : "bottom", 
                        theme_advanced_resizing : false,

                        // Drop lists for link/image/media/template dialogs
                        template_external_list_url : "lists/template_list.js",
                        external_link_list_url : "lists/link_list.js",
                        external_image_list_url : "lists/image_list.js",
                        media_external_list_url : "lists/media_list.js",

                        // Replace values for the template plugin
                        template_replace_values : {
                            username : "Some User",
                            staffid : "991234"
                        }       
                    });
                    count++;
                }

            }else if(Editor == "Choose Editor"){

                $('#File_Name-label').hide();
                $('#File_Name-element').hide();            
                $('#File_Name').hide();

                $('#comment-label').hide();
                $('#comment-element').hide();            
                $('#comment').hide();

                $('#iframe-ymacs').hide();
                $('#ymacs-use').hide(); 
                $('#accordionResizer').show();
            }else if(Editor == "Ymacs"){
                $('#File_Name-label').show();
                $('#File_Name-element').show();            
                $('#File_Name').show();

                $('#comment-label').hide();
                $('#comment-element').hide();            
                $('#comment').hide();

                $('#iframe-ymacs').show();
                //$('#iframe-ymacs').contentWindow.location.reload(true);
                // document.getElementById("#iframe-ymacs").contentDocument.location.reload(true);
                //var iframe = document.getElementById("#iframe-ymacs");
                //alert(iframe);
                // iframe.src = iframe.src;
                jQuery.each($("#iframe-ymacs"), function() {
                    $(this).attr({
                        src: $(this).attr("/index/editor")
                    });
                });
                $('#iframe-ymacs').attr('src', '/index/editor'); 
                $('#ymacs-use').show(); 
                $('#accordionResizer').hide();
                //autoResize('#ymacs');
                //$('#accordionResizer').hide(); 
            }
        });     
    });
</script>
4

1 回答 1

1

如果我理解,表单已发布,经过验证的服务器端,当它出现错误时,它会被填充并发送回用户。然后,用户会看到带有错误消息的表单,对吗?如果是这种情况,您将需要触发 Advanced_Settings 和 Compile_Advanced 复选框来检查它是否应该显示。就像是:

     <script type="text/javascript">
        $(document).ready(function(){              
            $("#Advanced_Settings").click(function(){

                if ($('#Advanced_Settings').is(':checked')) {
                    $('#Advanced_Options').removeAttr('disabled');
                    $('#Few_Compile').attr("disabled", "disabled");

                } else {
                    $('#Advanced_Options').attr("disabled", "disabled");
                    $('#Few_Compile').removeAttr('disabled');
                }  
            }); 

        $('#Advanced_Settings').click();  //This should trigger you checkbox click event
        });

</script>

如果首次提交表单时未单击该复选框,则应该隐藏您的高级设置。

于 2012-07-20T18:39:33.953 回答