We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 11348
    • 31 Posts
    есть такая форма ее надо заставить работать на modx 1.0.4:
    <body onLoad="setPrices()">
    
    <script type="text/javascript" language="Javascript"><!--
            prices = new Array (new Array (
    //мероприятие1
    new Array ("1 сентября",
    new Array("500р","1000р")
    )
    ,
    new Array ("2 сентября",
    new Array("500р","1100р")
    )
    //мероприятие2
    ), new Array (
    new Array ("3 сентября",
    new Array("500р","1200р")
    )
    //мероприятие3
    ), new Array (
    new Array ("4 сентября",
    new Array("500","1500")
    )
    ), new Array (
    ));
    
    
            function setPrices() {
        currentPerf = document.forms.tiket.perf.selectedIndex;
        while (document.forms.tiket.price.options.length) {
            document.forms.tiket.price.options[0] = null;
        }
        while (document.forms.tiket.date1.options.length) {
            document.forms.tiket.date1.options[0] = null;
        }
        if (prices[currentPerf][0] != null) {
            for (i=0; i < prices[currentPerf].length; i++) {
                opt = new Option(prices[currentPerf][i][0],prices[currentPerf][i][0]);
                document.forms.tiket.date1.options[i] = opt;
            }
            for (j=0; j < prices[currentPerf][0][1].length; j++) {
                opt = new Option(prices[currentPerf][0][1][j],prices[currentPerf][0][1][j]);
                document.forms.tiket.price.options[j] = opt;
            }
        } else {
            opt = new Option("ошибка","0");
            document.forms.tiket.price.options[0] = opt;
        }
    }
    
    function update1Prices() {
        currentPerf = document.forms.tiket.perf.selectedIndex;
        currentdate1 = document.forms.tiket.date1.selectedIndex;
        while (document.forms.tiket.price.options.length) {
            document.forms.tiket.price.options[0] = null;
        }
        if (prices[currentPerf][currentdate1] != null) {
            for (j=0; j < prices[currentPerf][currentdate1][1].length; j++) {
                opt = new Option(prices[currentPerf][currentdate1][1][j],prices[currentPerf][currentdate1][1][j]);
                document.forms.tiket.price.options[j] = opt;
            }
        } else {
            opt = new Option("ошибка","0");
            document.forms.tiket.price.options[0] = opt;
        }
    }
    --></script>
    
    
    
    <form name="tiket" method="post" onSubmit="return checkFields()">
      <table >
        <tr>
          <td width="40%">выберите мероприятие:</td>
          <td width="60%"><select name="perf" onChange="setPrices()" title="выберите мероприятие:">
              <option value="мероприятие1">мероприятие1</option>
              <option value="мероприятие2">мероприятие2</option>
              <option value="мероприятие3">мероприятие3</option>
            </select></td>
        </tr>
        <tr>
          <td width="40%">Дата:</td>
          <td width="60%"><select name="date1" onChange="update1Prices()" title="Дата:">
            </select></td>
        </tr>
        <tr>
          <td width="40%">Цена</td>
          <td width="60%"><select name="price" title="Цена:">
            </select></td>
        </tr>
            <tr>
          <td width="40%">Комментарии:</td>
          <td width="60%"><textarea name="comments" cols="40" rows="5" title="Комментарии:"></textarea></td>
        </tr>
        <tr>
          <td width="40%"> </td>
          <td width="60%"><input type=submit name=doSendSendmail value="отправить"></td>
        </tr>
      </table>
    </form>
    


    если просто использую eForm то из-за "даты" и "цены" возникает ошибка

    PHP error debug
    Error: #LIST rule declared but no list values supplied: #LIST
    Error type/ Nr.: User Warning - 512
    File: ...eform.inc.php
    Line: 947

    судя по всему есть какое-то решение с параметром eformonbeforeformparse http://modxcms.com/forums/index.php?topic=37089.0
    но я не смог понять что нужно сделать.


      • 9085
      • 630 Posts
      Error: #LIST rule declared but no list values supplied: #LIST
      1. я бы вынес js отдельно (см. параметр &jScript) - скорее всего, это поможет.
      2. Если нет - пробовать вставлять форму "частями". Если ошибка возникнет - будет ясно, где искать.

      Удачи.
      ps. Может в SELECT хоть по одной пустой (а лучше с записью "требуется JS") OPTION вставить?
        Правильно заданный вопрос повышает вероятность получения нужного ответа.
        Что-то не работает? Загляните в лог ошибок!
        Есть проблема? "Локализуйте" её!
        Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx