Заполните поля формы с помощью Javascript на основе первого поля - PullRequest
0 голосов
/ 08 февраля 2012

У меня небольшая проблема, для которой я пытаюсь найти лучшее решение. У меня есть форма, где пользователи будут вводить URL-адрес, который они копируют, он всегда будет отформатирован аналогично.
Как это: http://www3.google.com/register.php?key=12334123

Я бы хотел заполнить два поля на основе вышеуказанного ввода.

Поле 1 будет сервером (поддомен)

Поле 2 будет номером ключа.

В настоящее время я сделал что-то, что работает, однако я думаю, что было бы лучше сделать это с помощью регулярных выражений, а не так, как я это делаю.

Будучи не слишком увлеченным java, для меня это вызов, любая помощь будет принята с благодарностью!

<script language="javascript">
function urlbreaker(url)
{
    var startserver = document.form1.url.value.search(/www/)

    document.form1.server.value = document.form1.url.value.substr(startserver, 4)

    var startkey = document.form1.url.value.search(/=/)
    document.form1.key.value = document.form1.url.value.substr(startkey+1, 10)
}


</script>
<form id="form1" name="form1" method="post" action="">
  <p>
    <label for="url">input url:</label>
    <input type="text" name="url" id="url" onblur="urlbreaker()" />
   http://www3.google.com/register.php?key=12334123</p>
  <p>
    <label for="server">Server:</label>
    <input type="text" name="server" id="server" />
  should be www3</p>
  <p>
    <label for="key">key</label>
    <input type="text" name="key" id="key" />
  should be 12334123</p>

</form>

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Простое регулярное выражение, которое соответствует части узла и ключевому параметру URL, будет выглядеть следующим образом:

var url = 'http://www3.google.com/register.php?key=12334123';
var match = /[^:]*\/\/([^\/]+)\/[^?]+\?[\s\S]*?key=(\d*)/m.exec(url);
var domain = match[1]; // www3.google.com
var key = match[2]; // 12334123

Вы запрашиваете сервер / поддомен, поэтому, если вы хотите получить «www3»

var url = 'http://www3.google.com/register.php?key=12334123';
var match = /[^:]*\/\/([^.]+)[^\/]*\/[^?]+\?[\s\S]*?key=(\d*)/m.exec(url);
var domain = match[1]; // www3
var key = match[2]; // 12334123
0 голосов
/ 08 февраля 2012
function urlbreaker(url)
{
    var match = document.form1.url.value.match(/http:\/\/(.{3,4})\..*?\..*\?(key|.*&key)=(\d*).*/);

    document.form1.server.value = match[1];
    document.form1.key.value = match[3];
}
...