Отправка формы js
Здравствуйте.
Есть скрипт function validateFields() { var frmEl = document.getElementById('cForm'); var posName = document.getElementById('posName'); var posEmail = document.getElementById('posEmail'); var posText = document.getElementById('posText'); if ( posName.value == '') { alert("Введите Ваше имя"); posName.focus(); return; } if ( posEmail.value == '') { alert("Введите Ваш Email"); posEmail.focus(); return; } var whiteSpace = /^[\s]+$/; if ( posText.value == 'Address' || whiteSpace.test(posText.value) ) { alert("Введите адрес"); posText.focus(); return; } sendPosEmail(); } function sendPosEmail () { var success = document.getElementById('emailSuccess'); var posName = document.getElementById('posName'); var posEmail = document.getElementById('posEmail'); var posText = document.getElementById('posText'); var page = "/scripts/xmlHttpRequest.php?contact=true&xml=true"; showContactTimer(); // quickly begin the load bar success.style.display = 'none'; // hide the success bar (incase this is a multi-email // convert (&, +, =) to string equivs. Needed so URL encoded POST won't choke. var str1 = posName.value; str1 = str1.replace(/&/g,"**am**"); str1 = str1.replace(/=/g,"**eq**"); str1 = str1.replace(/\+/g,"**pl**"); var str2 = posEmail.value; str2 = str2.replace(/&/g,"**am**"); str2 = str2.replace(/=/g,"**eq**"); str2 = str2.replace(/\+/g,"**pl**"); var str4 = posText.value; str4 = str4.replace(/&/g,"**am**"); str4 = str4.replace(/=/g,"**eq**"); str4 = str4.replace(/\+/g,"**pl**"); var stuff = "posName="+str1+"&posEmail="+str2+"&posText="+str4; loadXMLPosDoc(page,stuff) } function showContactTimer () { var loader = document.getElementById('loadBar'); loader.style.display = 'block'; sentTimer = setTimeout("hideContactTimer()",800); } function hideContactTimer () { var loader = document.getElementById('loadBar'); var success = document.getElementById('emailSuccess'); var fieldArea = document.getElementById('contactFormArea'); var inputs = fieldArea.getElementsByTagName('input'); var inputsLen = inputs.length; var tAreas = fieldArea.getElementsByTagName('textarea'); var tAreasLen = tAreas.length; // Hide the load bar alas! Done Loading loader.style.display = "none"; success.style.display = "block"; success.innerHTML = '<strong style="color:green;">'+grabPosXML("confirmation")+'</strong>'; // Now Hijack the form elements for ( i=0;i<inputsLen;i++ ) { if ( inputs[i].getAttribute('type') == 'text' ) { inputs[i].value = ''; } } for ( j=0;j<tAreasLen;j++ ) { tAreas[j].value = ''; } } function ajaxContact() { var frmEl = document.getElementById('cForm'); addEvent(frmEl, 'submit', validateFields, false); frmEl.onsubmit = function() { return false; } } addEvent(window, 'load',ajaxContact, false); Все хорошо работает, но возникла проблема. У меня на странице несколько форм и естественно скрипт не работает сразу же для всех форм. Вот как его переделать, чтобы работал он для форм: <div id="contactFormArea"> <form action="#" method="post" id="cForm"> </form> и <div id="contactFormArea2"> <form action="#" method="post" id="cForm2"> </form> Обработчик может 1 работать. В принципе там схожие данные - просто разные переменные передаются. Вопрос именно в отправке, чтобы работали обе кнопки submit и отправляли переменные из своих форм=) |
Очевидно же - у тебя в коде везде стоит document.getElementById('cForm') - где cForm - айдишник первой формы. Что бы работало для всех форм нужно если просто и тупо - переписать функцию столько раз сколько нужно и заменить cForm на cForm2....n (а так же и posName,posEmail и так далее все айдишники)
Если есть капля понимания что ты делаешь - то передавать в функцию аргументы вместо конкретных id - function validateFields(form_id,name,email,text) {//передаем агрументы var frmEl = document.getElementById('form_id');//заменяем конкретные id на аргументы var posName = document.getElementById('name'); var posEmail = document.getElementById('email'); var posText = document.getElementById('text'); ......... }//и так даелее для всех validateFields('cForm2','posName2','posEmail2','posText2');//вызываем с нужными аргументами Ундерстэнд? |
Цитата:
Не работает =) Ну попробую сегодня по другому - отпишусь=) |
Часовой пояс GMT +3, время: 21:45. |