Работа с формой без перезагрузки страницы PHP и AJAX

Статус
В этой теме нельзя размещать новые ответы.

karpiy

Создатель
Регистрация
27 Янв 2009
Сообщения
21
Реакции
5
Добрый день, как можно сделать так, чтобы при при изменении полей в форме, без перезагрузки страницы автоматически менялись значения. Значения будут подгружаться из xml файла.
Пример на этой странице конвертор валют
 
Добрый день, как можно сделать так, чтобы при при изменении полей в форме, без перезагрузки страницы автоматически менялись значения. Значения будут подгружаться из xml файла.
Пример на этой странице конвертор валют Для просмотра ссылки Войди или Зарегистрируйся
Ты пробовал погуглить прежде чем спрашивать? вопрос довоольно распространенный и в инете куча инфы. От себя могу добавть, для чтения xml нужна библиотека simpleXML для PHP, а с помощью js-фреймворка jquery можно получить данные без перезагрузки страницы.
 
используй javascript
на Для просмотра ссылки Войди или Зарегистрируйся написано:
<input id="fn_s1" type="text" value="0.00" maxlength="80" onkeyup="fn_calculate();" onfocus="if (this.value == '0.00') this.value='';" onblur="if (this.value == '') {this.value = '0.00'; };">
тоесть когда ты набираеш, срабатывет собитие onkeyup="fn_calculate();

а вот функция

PHP:
	fn_calculate(c);
}
function fn_calculate(c, myval){
	var myval = myval || false;
	var bid = 1;
	var s = parseFloat(dge('fn_s' + bid).value) || '0.00';
	var c = c || dge('fn_c' + bid).value;
	var t = 0;
	var inp = null;
	var v = 0;
	var robj = null;
	var first = true;

	if (c == 1)
		var fn_bc1 = 1; 
	else {
		if (typeof(fn_bR[fn_bID]) != 'undefined' && typeof(fn_bR[fn_bID][c]) != 'undefined' && typeof(fn_bR[fn_bID][c][0]) != 'undefined')
			var fn_bc1 = fn_bR[fn_bID][c][sell ? 0 : 1];
		else
			var fn_bc1 = '';
	}

	if (myval) {
		els = dge('fn_bank').options;
		for (var i=0; i < els.length; i++) {
			if (els[i].value == 1000)
				//dge('fn_bank').selectedIndex = i;
				els[i].selected = true;
		}
	}

	for (var i in fn_cs) {
		inp = dge('fn_i' + bid+ '_' + i);
		if (inp == null)
			continue;
		robj = dge('fn_o' + bid+ '_' + i);
		v = parseFloat(inp.value) || 0;
		if (i == c) {
			robj.value = s;
		} else if (i == 1) {
			t = Math.round(s * v * 100) / 100;
			if (robj.innerHTML) {
				robj.innerHTML = (t == 0) ? '0.00' : t;
			} else {
				robj.value = (t == 0) ? '0.00' : t;
				//fn_updateWidth(robj, robj.value.length);
			}
		} else {
//			t = (v == 0) ? 0 : Math.round(s * dge('fn_bc' + bid).value / v * 100) / 100;
			t = (v == 0) ? 0 : Math.round(s * fn_bc1 / v * 100) / 100;

			if (robj.innerHTML) {
				robj.innerHTML = (t == 0) ? '0.00' : t;
			} else {
				robj.value = (t == 0) ? '0.00' : t;
				//fn_updateWidth(robj, robj.value.length);
			}
		}
	}
}

ПиСи: если что то не срабатывает может подучить javascript?
 
используй javascript
на Для просмотра ссылки Войди или Зарегистрируйся написано:
<input id="fn_s1" type="text" value="0.00" maxlength="80" onkeyup="fn_calculate();" onfocus="if (this.value == '0.00') this.value='';" onblur="if (this.value == '') {this.value = '0.00'; };">
тоесть когда ты набираеш, срабатывет собитие onkeyup="fn_calculate();

а вот функция

PHP:
    fn_calculate(c);
}
function fn_calculate(c, myval){
    var myval = myval || false;
    var bid = 1;
    var s = parseFloat(dge('fn_s' + bid).value) || '0.00';
    var c = c || dge('fn_c' + bid).value;
    var t = 0;
    var inp = null;
    var v = 0;
    var robj = null;
    var first = true;

    if (c == 1)
        var fn_bc1 = 1; 
    else {
        if (typeof(fn_bR[fn_bID]) != 'undefined' && typeof(fn_bR[fn_bID][c]) != 'undefined' && typeof(fn_bR[fn_bID][c][0]) != 'undefined')
            var fn_bc1 = fn_bR[fn_bID][c][sell ? 0 : 1];
        else
            var fn_bc1 = '';
    }

    if (myval) {
        els = dge('fn_bank').options;
        for (var i=0; i < els.length; i++) {
            if (els[i].value == 1000)
                //dge('fn_bank').selectedIndex = i;
                els[i].selected = true;
        }
    }

    for (var i in fn_cs) {
        inp = dge('fn_i' + bid+ '_' + i);
        if (inp == null)
            continue;
        robj = dge('fn_o' + bid+ '_' + i);
        v = parseFloat(inp.value) || 0;
        if (i == c) {
            robj.value = s;
        } else if (i == 1) {
            t = Math.round(s * v * 100) / 100;
            if (robj.innerHTML) {
                robj.innerHTML = (t == 0) ? '0.00' : t;
            } else {
                robj.value = (t == 0) ? '0.00' : t;
                //fn_updateWidth(robj, robj.value.length);
            }
        } else {
//            t = (v == 0) ? 0 : Math.round(s * dge('fn_bc' + bid).value / v * 100) / 100;
            t = (v == 0) ? 0 : Math.round(s * fn_bc1 / v * 100) / 100;

            if (robj.innerHTML) {
                robj.innerHTML = (t == 0) ? '0.00' : t;
            } else {
                robj.value = (t == 0) ? '0.00' : t;
                //fn_updateWidth(robj, robj.value.length);
            }
        }
    }
}
ПиСи: если что то не срабатывает может подучить javascript?
И где ты тут видишь подгрузку данных из xml?
 
Ты пробовал погуглить прежде чем спрашивать? вопрос довоольно распространенный и в инете куча инфы. От себя могу добавть, для чтения xml нужна библиотека simpleXML для PHP, а с помощью js-фреймворка jquery можно получить данные без перезагрузки страницы.
Как получить данные из xml файла я и так знаю, меня интересует реализация изменений данных в самой форме.
Гугл мне понятного ответа так и не выдал
 
И где ты тут видишь подгрузку данных из xml?
ептиль, а где ты видел на Для просмотра ссылки Войди или Зарегистрируйся подгрузку данных из xml?
единственный файл который подгружается в формате xml это Для просмотра ссылки Войди или Зарегистрируйся

Но суть дела это не меняет. Есть событие onkeyup, срабатывает когда ты начинаеш набирать текст в инпуте. Есть функция котороя отрабатывается. Какую функцию себе напишеш, такая и выполнится.
 
Если мои глаза мне не врут, ТС писал:
Писал, но суть не в этом.
Для полного понимания вопроса, что нужно
HTML:
В это поле вводим число к примеру 100 <br>
<input type="text" value="0.00"> 
<br>
В этом поле атоматически должен выводиться результат, допустим значение первого поля умноженное на 2 <br>
<input type="text" value="0.00">
 
Писал, но суть не в этом.
Для полного понимания вопроса, что нужно
HTML:
В это поле вводим число к примеру 100 <br>
<input type="text" value="0.00"> 
<br>
В этом поле атоматически должен выводиться результат, допустим значение первого поля умноженное на 2 <br>
<input type="text" value="0.00">
Это осуществляется простейшей функцией на javascript, которая будет вызываться по событию. В твоем случае это скорее всего будет событие onkeyup.
А функция:
HTML:
<script type="text/javascript">
function Multi (elm, id)
{
var i = document.getElementById(id);
var j = elm.value;
i.value = j*2;
}
</script>
<!-- И сами инпуты -->
<input id="1" onkeyup="Multi(this, 2)" type="text" value="0.00">
<input id="2" type="text" value="0.00">
Примерно так...
 
Когда то сам таким баловаловался, теперь отдаю в хорошие руки
 

Вложения

  • 3058.zip
    4,1 KB · Просмотры: 23
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху