Witajcie
Mam bardzo dizwny problem
Mam formularz, którego pola tekstowe przekazywane są za pomocą javascript-a do obróbki. Forlmuarz mam sformatowany za pomocą css-a. i niestety jeśli wywalę div-a, w którym siedzi pole tekstowe i diva w którym jest akacja onClick wszystko działa bez zarzutu ... jeśli wracam spowrotem na div-y akcja też jest wyłowywana ale w url-u nie jest przekazywane w URL-u (widać to w firebugu -> przy wywalonych divach robiony jest url ...?<nazwa_pola>=<wartość_pola> -
czyli po prostu zwykły GET, w przypadku jeśli dostawiam te div-y niestety zaden parametr w URL-u się nie pokazuje. Możecie mi pomóc rozwiązać ten problem ... BARDZO nie chciałbym zmieniać css-a ani formatowania formularza ... może jest to problem z funkcją javascript ... ale niestety nie mogę dojść ...
poniżej plik.html
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="/test/css/main.css" /> <script type="text/javascript" src="/test/_js/actions.js" ></script> <script type="text/javascript"> // <![CDATA[
var myMenu;
window.onload = function() {
myMenu = new SDMenu("my_menu");
myMenu.init();
};
// ]]>
<script type="text/javascript"> function gotopage(form, func, parms) {
var command='document.'+form+'.run.value=''+func+'';';
var par = new Array;
if (parms.length)
par = parms.split(',',10);
for (var i=0;i<par.length;i++) {
command+='document.'+form+'.par'+(i+1)+'.value=''+par[i]+'\';';
}
command+='document.'+form+'.submit()';
eval(command);
}
przeszłoArray
(
)
<form action="javascript:get(document.getElementById('myform'));" name="myform" id="myform"> <div class="form-row"><!-- PIERWSZY DIV KTÓRY MUSZĘ USUWAĆ ŻEBY DZIAŁAŁO--> <label for="search_phrase">Programy
» Wyszukaj
</label> <input class="long" type="text" name="search_phrase" val ue="search_phrase" />
<div id="FormRows"><!-- DRUGI DIV KTÓRY MUSZĘ USUWAĆ ŻEBY DZIAŁAŁO-->
<a href="#" class="submit" onClick="get(this.parentNode);") </nobr>
oraz funkcje które odpowiadają za odbieranie danych z forma
var http_request = false;
function makeRequest(url, parameters) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
// set type accordingly to anticipated content type
//http_request.overrideMimeType('text/xml');
http_request.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Cannot create XMLHTTP instance');
return false;
}
http_request.onreadystatechange = alertContents;
http_request.open('GET', url + parameters, true);
http_request.send(null);
}
function alertContents() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
//alert(http_request.responseText);
result = http_request.responseText;
document.getElementById('div1').innerHTML = result;
} else {
alert('There was a problem with the request.');
}
}
}
function get(obj) {
var getstr = "?";
for (i=0; i<obj.childNodes.length; i++) {
if (obj.childNodes[i].tagName == "INPUT") {
if (obj.childNodes[i].type == "text") {
getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value
+ "&";
}
if (obj.childNodes[i].type == "checkbox") {
if (obj.childNodes[i].checked) {
getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].val
ue + "&";
} else {
getstr += obj.childNodes[i].name + "=&";
}
}
if (obj.childNodes[i].type == "radio") {
if (obj.childNodes[i].checked) {
getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].val
ue + "&";
}
}
}
if (obj.childNodes[i].tagName == "SELECT") {
var sel = obj.childNodes[i];
getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&
";
}
}
makeRequest('/test/forms/programs/control/programs.php', getstr);
}
tak jak mówiłem wcześniej za każdym razem wykonywane jest zapytanie prze makeRequest ... tyle że przy wpisanych div-ach nie przekazywane są argumenty w url-u a bez nich są ...
dzięki za pomoc
czy ktoś mógłby mi z tym pomóc ... jest to dla mnie dość pilne a nie mam pojęcia o co chodzi
.
Ten post edytował kropla 1.01.2009, 20:41:53