2012-07-20 110 views
0

我正在使用Zend_Form並進行表單驗證。問題是我隱藏了一些使用jQuery show()hide()函數的表單域。當Zend_Form驗證,驗證並發現一個錯誤,所有的jQuery隱藏字段顯示?

這裏的問題是,如果驗證發現錯誤,所有表單字段將顯示,我想要的是保持隱藏和可見字段的狀態。任何想法爲什麼發生這種情況?

如果代碼有區別,請詢問它,我會立即提供。

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 ><+.,[email protected]#$%^&*()\"\'=]/', 
      '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', 
    )); 
} 

jQuery的hide()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> 
+0

當然你的代碼很重要。 – 2012-07-20 13:37:20

+0

好的,這裏是添加的代碼 – user1515244 2012-07-20 13:41:07

+0

你可以嘗試的一件事就是在這行後面加上$(「#Compile_Advanced」)。click(); 。因此,您將在代碼中找到表單後觸發事件點擊。這應該解決問題 – 2012-07-20 14:23:12

回答

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> 

如果在首次提交表單時沒有單擊複選框,應該隱藏高級設置。