Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Кнопка-ссылка с передачей параметра (https://javascript.ru/forum/dom-window/31101-knopka-ssylka-s-peredachejj-parametra.html)

Alex7778 27.08.2012 08:29

Кнопка-ссылка с передачей параметра
 
Добрый день.
Возникла проблема при написании формы, прошу помочь! :)

<form action="go.php" id="myform">
<a href="javascript: document.nocredit.submit ()" onclick="submit();" >param 1</a>
<a href="javascript: document.nocredit.submit ()" onclick="submit();" >param 2</a>
</form>

Необходимо сделать так, чтобы при нажатии на ссылку "param 1" передавалось значение 1, а при нажатии на ссылку "param 2" передавалось значение 2.

bes 27.08.2012 09:04

<form action="http://javascript.ru" method="get">
	<a href="#">param 1</a>
	<a href="#" >param 2</a>
	<input type="hidden" name="inp">
</form>

<script>
window.onload = function () {
	document.forms[0].onclick = function (e)  {
		e = e || event;
		var target = e.target || e.srcElement;
		if (target.tagName == 'A') {
			if (target == this.children[0]) {
				this.inp.value = 1;
			} else {
				this.inp.value = 2;
			}
			alert(this.inp.value)
			this.submit();
		}
	}
}
</script>

Alex7778 27.08.2012 20:08

Спасибо.
Работает как надо, но мне необходимо, чтобы скрипт находился в отдельном файле. Я помещаю скрипт в файле script.js:

window.onload = function () {
document.forms[0].onclick = function (e) {
e = e || event;
var target = e.target || e.srcElement;
if (target.tagName == 'A') {
if (target == this.children[0]) {
this.inp.value = 1;
} else {
this.inp.value = 2;
}
alert(this.inp.value)
this.submit();
}
}
}

И запускаю код:

<form action="go.php" method="get">
<a href="#">param 1</a>
<a href="#" >param 2</a>
<input type="hidden" name="inp">
</form>
<script type="text/javascript" src="script.js"></script>

Таким образом не работает.
Подскажите пожалуйста как решить проблему.

bes 27.08.2012 20:17

Вроде всё чётко, у меня этот код работает, смотрите в консоль может ошибка где-то случайно закралась (лишний символ и т.п.)

Deff 27.08.2012 20:18

Alex7778,
У Вас на странице форма - единственная ?

bes 27.08.2012 20:24

window.onload также не позволяет задания в нескольких местах, работает только код в последнем

Alex7778 28.08.2012 01:21

Deff, да, форма одна. Тестирую именно этот код, который приведён как пример. Ничего другого на странице нет.

bes, если скрипт и html-код в одном файле, то работает всё как надо. Если скрипт вывожу в отдельный файл, то не работает. Синтаксических ошибок нет.

Может есть другие решения?

Deff 28.08.2012 01:41

Alex7778,
Дайте ссылку на тестовую страницу - аш интригует

Alex7778 28.08.2012 05:48

Deff, в коде была нелепая ошибка - неправильный путь к файлу скрипта. После её исправления Всё заработало.

Однако у меня в коде используются переменные типа name[nameid].
Когда я вместо inp подставляю name[nameid], то скрипт не работает.
Вот пример нерабочего скрипта:

window.onload = function () {
document.forms[0].onclick = function (e) {
e = e || event;
var target = e.target || e.srcElement;
if (target.tagName == 'A') {
if (target == this.children[0]) {
this.name[nameid].value = 1;
} else {
this.name[nameid].value = 2;
}
alert(this.name[nameid].value);
this.submit();
}
}
}

html-код:

<form action="go.php" method="get">
<a href="#">param 1</a>
<a href="#" >param 2</a>
<input type="hidden" name="name[nameid]">
</form>

bes 28.08.2012 08:32

Для оформления кода используйте bb-теги ([html run]) http://javascript.ru/formatting

name="name[nameid]" - в скобках не переменная, объясняйте подробнее, чего и как пытаетесь добиться


Часовой пояс GMT +3, время: 23:37.