Как получить значение по ссылке и отправить форму с помощью mootools?
У меня есть такая форма со многими ссылками:
<form name="myform" action="" method="get" id="form">
<p>
<a href="getValue('A')" class="del">My link</a>
</p>
<p>
<a href="getValue('B')" class="del">My link 2</a>
</p>
<p>
<a href="getValue('C')" class="del">My link 3</a>
</p>
<input type="hidden" name="division" value="" />
</form>
Я хотел бы отправить значение формы по ссылке, которая была нажата на скрипт php, и получить ответ (без перезагрузки страницы).
Я пытаюсь написать функцию, которая получает значение по ссылке:
<script type="text/javascript">
window.addEvent('domready', function() {
getValue = function(division)
{
var division;
division=$('form').getElements('a');
}
</script>
но я не знаю, как правильно написать это. Далее я хотел бы отправить форму:
$$('a.del').each(function(el) {
el.addEvent('click', function(e) {
new Event(e).stop();
$('form').submit();
});
});
Как я должен отправить его, чтобы получить ответ из php-файла, не перезагружая страницу?
2 ответа
Решение
Это работает для меня:
<form id="form">
<a data-value="A">My link</a>
...
</form>
<script>
var links = document.id('form').getElements('a');
links.each(function(link) {
link.addEvent('click', function(e) {
e.stop();
var value = link.getProperty('data-value');
var req = new Request.HTML({
url: "/path/to/your/listener",
data: value,
onRequest: function(){
$('display').set('text', 'Search...');
},
onComplete: function() {
},
update : $('display')
}).get(
{data: value}
);
});
})
</script>
Вместо того, чтобы вставлять JavaScript в HTML, я бы предложил использовать делегированное событие. Я также отправил бы форму, используя вызов ajax вместо отправки формы.
<form id="form">
<a data-value="A">My link</a>
...
</form>
<script>
var formEl = document.id('form');
formEl.addEvent('click:relay(.del)', function() {
var value = this.getProperty('data-value');
new Request.JSON({
url: '/path/to/your/listener',
onSuccess: function(data) {
// ...
}
}).get({
value: value
});
});
</script>