|
|
|
|
|
для: АЯ
(11.08.2011 в 20:50)
| | Спасибо! | |
|
|
|
|
|
|
|
для: SK
(11.08.2011 в 19:55)
| | Замените соответствующую строку на:
with (document.getElementById ('lnk')) href = innerHTML = Url + ((k) ? tmp.join ('&') : '');
|
Кроме того, можете убрать лишнее -
for (var tmp = [], qs = '', j = k = 0, lj = Inp.length; j < lj; j++)
|
------
Кроме того, обращаю внимание, что использование ОДНИХ и ТЕХ ЖЕ значений для имен переменных и ID - это ОЧЕНЬ непрофессионально. Я про var lnk = document.getElementById ('lnk'); - lnk на странице УЖЕ есть (как ID элемента). Неужто "буковок" не хватило, чтобы написать, например, var myLnk?
Поясняю примером. Запустите в любом браузере:
<html>
<body onload="alert (lnk.innerHTML)">
<a id="lnk" href="#">Моя ссылка</a>
</body>
</html>
|
Как видите, переменная с именем lnk - которое определено как ID тега - она УЖЕ есть. | |
|
|
|
|
|
|
|
для: SK
(08.08.2011 в 17:35)
| | Есть такой код:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body id="theBody">
<img align="center" src="images/logo.png"/>
<br><br>
<div id="flds">
<table width="500">
<tr>
<td align="left" colspan="2">Document Link generator for <a target="blank" href="http://hybrid2.vesta.wkglobal.com">hybrid2.vesta.wkglobal.com</a></td>
</tr>
<tr>
<td>CIP identifier:</td>
<td><input id="cip" size="50" type="text"></td>
</tr>
<tr>
<td>Document identifier:</td>
<td><input id="d" size="50" type="text"></td>
</tr>
<tr>
<td>View mode:</td>
<td><input id="v" size="50" type="text"></td>
</tr>
<tr>
<td>Highlighted terms 1:</td>
<td><input id="h1" size="50" type="text"></td>
</tr>
<tr>
<td>Highlighted terms 2:</td>
<td><input id="h2" size="50" type="text"></td>
</tr>
</table>
</div>
<br>
<br>
<select id="slt" onChange='mFunction(this.value)'>
<option value="http://vesta.wkglobal.com/display?">http://vesta.wkglobal.com/display?</option>
<option value="http://hybrid.vesta.wkglobal.com/display?">http://hybrid.vesta.wkglobal.com/display?</option>
<option value="http://hybridacc.kluwer.nl/display?">http://hybridacc.kluwer.nl/display?</option>
<option value="http://hybridtest01.kluwer.nl/display?">http://hybridtest01.kluwer.nl/display?</option>
<option value="http://hybridtest02.kluwer.nl/display?">http://hybridtest02.kluwer.nl/display?</option>
<option value="http://hybrid.kluwer.nl/display?">http://hybrid.kluwer.nl/display?</option>
</select>
<a id="lnk" target="blank" href="http://vesta.wkglobal.com/display?">http://vesta.wkglobal.com/display?</a>
<script>
function mFunction (host) {
var lnk = document.getElementById('lnk');
lnk.setAttribute("href", host);
lnk.innerHTML = host;
Url = host;
mFunc();
}
function mFunc (evt)
{
var e = window.event || evt, obj = e.target || e.srcElement;
if (Fid [obj.id] < 0) Fid [obj.id] = Num++;
Val [Fid [obj.id]] = obj.id + '=' + encodeURIComponent (obj.value);
for (var tmp = [], qs = '', j = k = 0, lj = Inp.length; j < lj; j++)
if (Val [j] && Val [j].split ('=') [1]) tmp [k++] = Val [j];
with (document.getElementById ('lnk')) href = innerHTML = Url + ((tmp.length) ? ('&' + tmp.join ('&')) : '');
}
var Num = 0, Inp = document.getElementById ('flds').getElementsByTagName ('input'),
Val = new Array (Inp.length), Fid = new Array (Inp.length), Url = document.getElementById ('lnk').href;
for (var j = 0, lj = Inp.length; j < lj; j++)
{
if (window.addEventListener) Inp [j].addEventListener ('input', mFunc, false);
else Inp [j].attachEvent ('onpropertychange', mFunc, false);
Fid [Inp [j].id] = -1;
}
</script>
</body>
</html>
|
Как исправить, чтобы при вводе значений в инпуты и соответственно формировании URL'а, не было первого &? | |
|
|
|
|
|
|
|
для: АЯ
(05.08.2011 в 20:39)
| | - | |
|
|
|
|
|
|
|
для: АЯ
(05.08.2011 в 20:39)
| | Да, подправил.
Буду разбираться, ибо написано профессионально :) | |
|
|
|
|
|
|
|
для: SK
(05.08.2011 в 20:11)
| | Махонькое исправление:
with (document.getElementById ('lnk')) href = innerHTML = Url + ((k) ? ('&' + tmp.join ('&')) : '');
| Чтобы лишний амперсанд не "висел", если все инпуты будут очищены. | |
|
|
|
|
|
|
|
для: АЯ
(05.08.2011 в 19:39)
| | Жму руку! Спасибо громадное. То, что нужно!!! | |
|
|
|
|
|
|
|
для: SK
(05.08.2011 в 17:48)
| |
<body>
<s>Предыдущий контент</s><br><br><br>
<div id="flds">
<b>p1:</b> <input id="FIRST" ><p><!-- id's могут быть какие угодно -->
<b>p2:</b> <input id="SECOND"><p>
<b>p3:</b> <input id="THIRD" ><p>
<b>p4:</b> <input id="FOURTH"> <!-- количество инпутов в контейнере div id="flds"произвольно -->
</div>
<hr>
<a id="lnk" href="http://hybrid2.com?provider=Kluwer32">http://hybrid2.com?provider=Kluwer32</a>
<script>
function mFunc (evt)
{
var e = window.event || evt, obj = e.target || e.srcElement;
if (Fid [obj.id] < 0) Fid [obj.id] = Num++;
Val [Fid [obj.id]] = obj.id + '=' + encodeURIComponent (obj.value);
for (var tmp = [], qs = '', j = k = 0, lj = Inp.length; j < lj; j++)
if (Val [j] && Val [j].split ('=') [1]) tmp [k++] = Val [j];
with (document.getElementById ('lnk')) href = innerHTML = Url + '&' + tmp.join ('&');
}
var Inp = document.getElementById ('flds').getElementsByTagName ('input'),
Val = new Array (Inp.length), Fid = new Array (Inp.length),
Num = 0, Url = document.getElementById ('lnk').href;
for (var j = 0, lj = Inp.length; j < lj; j++)
{
if (window.addEventListener) Inp [j].addEventListener ('input', mFunc, false);
else Inp [j].attachEvent ('onpropertychange', mFunc, false); Fid [Inp [j].id] = -1;
}
</script>
<br><br><br><s>Последующий контент</s>
</body>
|
| |
|
|
|
|
|
|
|
для: АЯ
(05.08.2011 в 17:36)
| | 1) Первым. Но если это сложнее, чем если бы вторым, то можно и вторым.
2) Копи-паст возможен. | |
|
|
|
|
|
|
|
для: SK
(05.08.2011 в 16:27)
| | 1. На вопрос нумер 2 из предыдущего поста вы так и не ответили.
А он принципиально важен.
2. Ввод в текстовое поле с клавиатуры - он единственно возможный?
А если клиент сделает копи-пасте? Это отслеживать надо? | |
|
|
|
|