Кнопка-ссылка с передачей параметра
Добрый день.
Возникла проблема при написании формы, прошу помочь! :) <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. |
<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> |
Спасибо.
Работает как надо, но мне необходимо, чтобы скрипт находился в отдельном файле. Я помещаю скрипт в файле 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> Таким образом не работает. Подскажите пожалуйста как решить проблему. |
Вроде всё чётко, у меня этот код работает, смотрите в консоль может ошибка где-то случайно закралась (лишний символ и т.п.)
|
Alex7778,
У Вас на странице форма - единственная ? |
window.onload также не позволяет задания в нескольких местах, работает только код в последнем
|
Deff, да, форма одна. Тестирую именно этот код, который приведён как пример. Ничего другого на странице нет.
bes, если скрипт и html-код в одном файле, то работает всё как надо. Если скрипт вывожу в отдельный файл, то не работает. Синтаксических ошибок нет. Может есть другие решения? |
Alex7778,
Дайте ссылку на тестовую страницу - аш интригует |
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> |
Для оформления кода используйте bb-теги ([html run]) http://javascript.ru/formatting
name="name[nameid]" - в скобках не переменная, объясняйте подробнее, чего и как пытаетесь добиться |
Хорошо, буду использовать bb-теги.
name[nameid] - переменная в smarty. |
Не знаю как там в smarty, но вот пример как переменные php добавляются в html-код
$a = 'yes'; $str = '<button onclick = "clicks(\'' . $a . '\')">click</button>'; echo $str; function clicks(value) { alert(value); } тогда вообще без name <form action="http://javascript.ru" method="get"> <a href="#">param 1</a> <a href="#" >param 2</a> <input type="hidden" name="name[nameid]"> </form> <script> window.onload = function () { document.forms[0].onclick = function (e) { var inp = this.children[2];//здесь получаем ссылку на input e = e || event; var target = e.target || e.srcElement; if (target.tagName == 'A') { if (target == this.children[0]) { inp.value = 1; } else { inp.value = 2; } alert(inp.value) this.submit(); } } } </script> |
Хорошо, буду использовать bb-теги.
name[nameid] - переменная в темплейте, и исходный код вполне работает. Строка взята из рабочего кода: <input type="hidden" name="name[nameid]" value="1"> При отправки формы, происходит передача параметра. В адресной строки я вижу: go.php?name[nameid]=1 |
Дело в том, что на страницу go.php необходимо передать значение параметра name[nameid]. Этот параметр нельзя изменить.
|
Цитата:
Цитата:
|
Всё заработало! Большое спасибо.
Сразу возник такой вопрос. Дело в том, что каждая из кнопок должна состоять из двух частей (для того, чтобы назначить разные стили). Помогите пожалуйста усовершенствовать скрипт. <form action="http://javascript.ru" method="get"> <a href="#" class="style1">param 1</a><a href="#" class="style2">param 1</a> <a href="#" class="style1">param 2</a><a href="#" class="style2">param 2</a> <input type="hidden" name="name[nameid]"> </form> |
<form action="http://javascript.ru" method="get"> <a href="#" class="style1">param 1</a><a href="#" class="style2">param 1</a> <a href="#" class="style1">param 2</a><a href="#" class="style2">param 2</a> <input type="hidden" name="name[nameid]"> </form> <script> window.onload = function () { document.forms[0].onclick = function (e) { var inp = this.children[this.children.length - 1];//здесь получаем ссылку на input e = e || event; var target = e.target || e.srcElement; if (target.tagName == 'A') { if (target == this.children[0] || target == this.children[1]) { inp.value = 1; } else { inp.value = 2; } alert(inp.value) this.submit(); } } } </script> |
Всё получилось. Спасибо!
|
Часовой пояс GMT +3, время: 07:21. |