We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 274
    • 108 Posts
    Всем привет, можно ли с помощью eform создовать динамически форму(добалять новый input, select) для отпрвки сообщение.
      • 897
      • 1,620 Posts
      да
        "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

        Не используйте Revo для "просто сайтов". Используйте Evo

        Who can defeat the Russian bear?
        • 274
        • 108 Posts
        как?

        что у меня не получается:

        снипет вызова eform:
        $outForm = $modx->runSnippet(
        		"eForm",
        		array(
        			"formid" => "FeedBackForm",
        			"tpl" => "eFBForm3NEWS",
        			"report" => "eFBReport3",
        			"thankyou" => "eFBThanks3",
        			"from" => "[email protected]",
        			"fromname" => "abc.com",
                                                 
        			"subject" => "Индивидуальный заказ",
        
        			"vericode" => "1"
        		)
        );
        echo $outForm;




        чанк:eFBForm3NEWS

        <div class="fbForm">
        	
        	<p><span style="color:#900;">[+validationmessage+]</span></p>
        	
        	<form method="post" action="[~[*id*]~]" id="FeedBackForm">
        		
        		<div class="form">
        
        
        
        
        <div class="name5">Город</div>
        			<div class="error" id="fbigrError"></div>
        			<div class="element">
        
            <select name="paymentigr"  id="igr" >
            <option value="Москва">Москва</option>
            <option value="Воронеж">Воронеж</option>
            </select>
        
        </div>
        
        			<div class="name">Описание города</div>
        			<div class="error" id="fbTextError"></div>
        			<div class="element" ><textarea name="fbText" id="fbText" eform="Описание города:html:1:Должен содержать не менее 5 символов.:#FUNCTION fbValidateText"  cols="40" rows="5">[+fbText+]</textarea></div>
        
        <div id="hjki"></div>
        
        <input type="hidden" name="kolvoinput" id="kolvoinput1"  value="0"  eform="::0::">
        <input type="hidden" name="kolvoinsoder2" id="kolvoinsoder3"  value=""  eform="::0::">
        
        <script type="text/javascript">
        
        var c=0;
        function new()
        {
        
        
        
                var e = document.createElement('div');
        var cc=c;		
        
        	
        	e.innerHTML= '<div class="name5">Город</div><div class="error" id="fbigrError"></div>
        			<div class="element">
        
            <select name="paymentigr"  id="igr" >
            <option value="Москва">Москва</option>
            <option value="Воронеж">Воронеж</option>
            </select>
        
        </div> <div class="name">Описание города</div>
        			<div class="error" id="fbTextError"></div>
        			<div class="element" ><textarea name="fbText" id="fbText" eform="Описание города:html:1:Должен содержать не менее 5 символов.:#FUNCTION fbValidateText"  cols="40" rows="5">[+fbText+]</textarea></div>';
        
                var table = document.getElementById ('hjki');
                var cont = table.parentNode;
                cont.insertBefore(e, table); 
                }
        </script>
        
        
        <div class="name"><input type="hidden" name="Fieldflag" value="0" id="find" eform="::0::" /><input type="button"  name="fb" id="fb0" value=" "  onClick="new()"></div>
        
        
        
        
        	
        			
        			<table cellpadding="0" cellspacing="0" class="captcha-test">
        				<tr>
        					<td>
        						<div class="name">Защита от спама</div>
        						<div class="captcha"><img src="[+verimageurl+]" alt="Проверочный код" border="1"></div>
        					</td>
        					<td>
        						<div class="name">Код на картинке:</div>
        						<div class="element"><input type="text" name="vericode" id="vericode" value=""></div>
        					</td>
        				</tr>
        			</table>
        			
        			<div class="submit"><input type="image"  name="fbSubmit" id="fbSubmit" value=" " src="assets/templates/site/images/zas.gif"></div>
        			
        		</div>
        
        	</form>
        
        </div>




        Проблема вследующем: Новые поля добавляются нормально, но после нажатие на кнопку отправить и если проверку не прошло то перенапрвляемся опять на форму отпраление, и если нажать на кнопку добавить,то она перестает работать, т е ничего не добавляется, и проблема почему только с тегом select, то есть если убрать добавление елемент select и оставить только textarea, то будет добавляться, что делать c select?
          • 897
          • 1,620 Posts
          лучше конкретно опишите что вам надо от еформа.
            "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

            Не используйте Revo для "просто сайтов". Используйте Evo

            Who can defeat the Russian bear?
            • 274
            • 108 Posts
            есть 2 кнопки Отправить и Добавить, при нажатие на кнопку Добавить добовляются 2 элемента: select и input, добавлять можно бесконечно. и соотвественно работать должны также как и другие элементы на форме, то есть с проверкой и тд.
              • 897
              • 1,620 Posts
              в еформа в версии 1.4.4

              &tpl
              chunk name (non-numeric) or document id (numeric) to use as a form template (new in 1.4.4) You can now also use a snippet as the template source. No parameters are forwarded to the snippet call in this version. For the regular form fields you do not normally need to add placeholders, they automatically get inserted by eForm. The esception to this rule are in the case of event functions where you want to set specific values. Special placeholders available are: [+validationmessage+], [+postdate+],[+verimageurl+] & [+debugText+]. You should have the [+validatiomessage+] placeholder in all your forms. The others you may need depending on other parameters.

              то есть в этом сниппите вам надо просто проверять пост параметры, по ним генерировать форму с учетом новых добавленных полей, дальше все старинке
                "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

                Не используйте Revo для "просто сайтов". Используйте Evo

                Who can defeat the Russian bear?
                • 274
                • 108 Posts
                создаю с помощбю js select, вот код:
                <select id="Name0"  name="past0" eform="::0::" onChange="selec()"> 
                
                <option value="0">москва</option>
                
                <option value="1">киев</option>
                
                </select>
                
                
                <select id="Name"  name="past" eform="::0::"> </select>
                
                
                
                <script type='text/javascript'>
                function selec(){
                var sel0 = document.getElementById("Name0").value;
                var sel = document.getElementById("Name");
                n=4; nn=3;
                
                if (sel0==0)  
                {
                for (i=0; i<=n; i++)
                {
                sel.options[i] = new Option(i,'abc');
                }
                }
                
                if (sel0==1)  
                {
                for (i=0; i<=nn; i++)
                {
                sel.options[i] = new Option(i,'minsk');
                }
                }
                
                
                }
                </script>
                
                


                создается все нормально но когда отправляю то пишит ошибку: past » Неверное значение
                не могу понять почему так?
                  • 897
                  • 1,620 Posts
                  потому что ждете готового решения. в этот раз покажу на примере.

                  вызов в документе
                  [!eForm? .... &tpl=`SomeCoolSnippet` .... !]
                  


                  в сниппете
                  ....
                  $_first_select_value = $_POST['Name0']
                  switch($_first_select)
                  {
                  case 1:
                  default:
                  $fields = $array_for_kiev;
                  break;
                  case 0:
                  default:
                  $fields = $array_for_moscow;
                  break;
                  }
                  for($fields as $key => $value)
                  $_second_select_fields = "<option value='$key'>$value</option>";
                  
                  $_second_select_tpl = "<select id='Name'  name='past' eform='::0::'>$_second_select_fields</select>"
                  
                  
                  $output = $modx->parseChunk('myCoolFormTpl', array('dynamic_select' => $_second_select_tpl), '[+', '+]');
                  
                  return &output;
                  


                  в чанке myCoolFormTpl
                  ....
                  
                  <select id="Name0"  name="past0" eform="::0::" onChange="selec()"> 
                  
                  <option value="0">москва</option>
                  
                  <option value="1">киев</option>
                  
                  </select>
                  
                  
                  [+dynamic_select+]
                  
                  ....
                  
                    "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

                    Не используйте Revo для "просто сайтов". Используйте Evo

                    Who can defeat the Russian bear?
                    • 274
                    • 108 Posts
                    спс, что значит "в сниппете" - куда код записывается?, в снипет eform?
                      • 897
                      • 1,620 Posts
                      сниппет SomeCoolSnippet
                        "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

                        Не используйте Revo для "просто сайтов". Используйте Evo

                        Who can defeat the Russian bear?