Заполнение формы заказа
Здравствуйте!
Необходимо для сайта разработать форму онлайн заявки. Суть её в том, что клиент, пошагово выбирая комплектующие, отправляет заявку на готовое изделие (резиновый шланг, с фитингами, если кому-то интересно). Форму в HTML я осилил, а вот со скриптами не дружу, как, в принципе, и остальные мои коллеги. С горем пополам я на просторах Интернета нарыл несколько подходящих скриптов, но некоторые работают не совсем так, как хотелось бы, а некоторые я просто не могу заставить работать вместе. В общем, вот примерный каркас пошагового выбора: <select name="" onchange="if (this.selectedIndex>0) {var chname=document.getElementsByName('artikul')[0]; chname.value+=this.options[selectedIndex].value+''}"> <optgroup label="Резиновый шланг высокого давления"> <option value="-1">Выберите:</option> <option value="1SNф">1SN</option> <option value="2SNф">2SN</option> <option value="NY1">NY100</option> </select><br><br> <select name="" onchange="if (this.selectedIndex>0) {var chname=document.getElementsByName('artikul')[0]; chname.value+=this.options[selectedIndex].text+'х'}"> <option value="-1">Выберите:</option> <option value="1">06</option> <option value="2">08</option> </select><br><br> <input type="text" id="length" size="50%" placeholder="Введите длину РВД в миллиметрах, нажмите кнопку"/></input><br><br> <button id="addlength">Указать длину</button><br><br> <script> var length = document.getElementById("length") ; var addlength = document.getElementById("artikul") ; document.getElementById("addlength").onclick = function() { artikul.value+= length.value ; } </script> <script> function f() { var fitting = document.getElementById('fitting') fitting.value = fitting.value.replace(/\s/g, '') } </script> <input style="text-transform: uppercase;" type='text' id='fitting' onblur='f()' size="50%" placeholder="Введите наименовение, например, PN13AOL16"></input><br><br> <button id="addfitting">Указать фитинг</button><br><br> <script> var fitting = document.getElementById("fitting") ; var addfitting = document.getElementById("artikul") ; document.getElementById("addfitting").onclick = function() { artikul.value+= fitting.value ; } </script> Обозначение: <input readonly type="text" name="artikul" id="artikul" value="" size="30em" /> но я тут вижу, как минимум, два недостатка: input artikul заполняется по нескольку раз из каждого источника, например если несколько раз менять значение select-а, каждое значение будет копироваться в artikul, хотелось, и есть кнопки, хотелось бы, чтобы заполнялось "на лету" (хотя не критично). По обоим select-ам нужна смена картинок, для этого есть более-менее понятный мне скрипт: <form name="form1" method="post" action=""> <select name="select" onchange='newpicture();'> <option value="1SN">1SN</option> <option value="2SN">2SN</option> <option value="2SN">TFW</option> </select> <br><br> <img height="100" name='pic' class="tab"> <script> function newpicture(){ document.pic.src=document.forms[0].select.value+".jpg"; } newpicture(); </script> </form> но я не могу запихнуть его в форму. Помогите, пожалуйста, разобраться. |
В итоге, есть два промежуточных решения, которые хотелось бы совместить.
1. Скрипт, который меняет изображения по Select-у: <select id="selecthose" onchange='hosepicture();'> <option value="-1">Выберите:</option> <optgroup label="Резиновый шланг высокого давления"> <option value="1SN">1SN</option> <option value="2SN">2SN</option> </select> <br><br> <img height="100" name='pic' class="tab"> <script> function hosepicture(){ var selecthose = document.getElementById('selecthose'); document.pic.src=selecthose.value+".jpg"; } </script> 2. Действие внутри самого Select-а, которое отправляет Value в Input: <select onchange="if (this.selectedIndex>0) {var chname=document.getElementsByName('artikul')[0]; chname.value+=this.options[selectedIndex].value+''}"> <option value="-1">Выберите:</option> <optgroup label="Резиновый шланг высокого давления"> <option value="1SN">1SN</option> <option value="2SN">2SN</option> </select><br><br> Обозначение: <input readonly type="text" name="artikul" id="artikul" value="" size="30em" /> Вопрос в том, как это совместить. Можно ли действие из пункта 2 впихнуть в скрипт №1? |
Цитата:
<select id="selecthose"> <option value="-1">Выберите:</option> <optgroup label="Резиновый шланг высокого давления"> <option value="1SN">1SN</option> <option value="2SN">2SN</option> </select> <br> <img height="100" name='pic' class="tab"> <br> <label> Обозначение: <input readonly type="text" name="artikul" id="artikul" value="" size="30em" /> </label> <script> function hosepicture(){ document.pic.src=this.value+".jpg"; if (this.selectedIndex>0) { document.getElementById('artikul').value+=this.value+''; }; }; document.getElementById('selecthose').addEventListener('change',hosepicture); </script> |
Отлично, спасибо Вам, Добрый Человек!
|
Ещё пара вопросов, ответов на которые я так и не нарыл в Интернетах:
<h1>Шаг №1: выберете тип рукава</h1> <div style="float: left; width: 25%; height: auto;">Тип рукава   <select id="selecthose"> <option value="-1">Выберите:</option> <optgroup label="Резиновый шланг высокого давления"> <option value="1SNф">1SN</option> <option value="2SNф">2SN</option> </optgroup> </select></div> <div style="float: right; width: 75%; height: auto;">Диаметр условного прохода   <select onchange="if (this.selectedIndex>0) {var chname=document.getElementsByName('artikul')[0]; chname.value+=this.options[selectedIndex].text+'х'}"> <option value="-1">Выберите из списка</option> <option value="1">06</option> <option value="2">08</option></select>  <div style="float: right;"><a target="blank" id="" href=""><b>Подробное описание рукава</b></a></div></div> </div> <br> <br> <div style="float: left; width: 50%; height: 300px;"><img name='table' height="300"></div> <div style="float: right; width: 50%; height: 300px;"><img height="50" name='pic'><img name='desc' height="250"></div> <script> function hosepicture(){ document.table.src=this.value+"_TABLE.png"; document.pic.src=this.value+".png"; document.desc.src=this.value+"_DESC.png"; if (this.selectedIndex>0) { document.getElementById('artikul').value=this.value+''; }; }; document.getElementById('selecthose').addEventListener('change',hosepicture); </script> <br> <div style="float: left; width: 30%;">Обозначение РВД:</div> <div style="float: right; width: 70%;"><input readonly type="text" name="artikul" id="artikul" value="" size="70%" placeholder=""></div> 1. Как бы добавить в скрипт динамическое изменение адреса ссылки? 2. В таком виде в Input Artikul добавляется (вернее дополняется) значение второго (и последующих) селекта при каждом его изменении, можно ли сделать, чтобы оно не добавлялось, а заменялось, но не полностью, а только та часть, которая добавляется конкретным селектом? |
Часовой пояс GMT +3, время: 05:30. |