2012-02-10 3 views
0

Я пытаюсь использовать jQuery для динамического обновления URL-адреса (в текстовом поле) на основе ввода пользователем значения в другом поле.Как заменить часть одного текстового поля на значение из другого текстового поля в jQuery?

Вот что у меня до сих пор: http://jsbin.com/isiqus/10/edit

Он работает для первого триггера события KeyUp, но не на последующих keyups. Может кто-нибудь сказать мне, где я ошибаюсь (я просто разбираюсь с jQuery).

+0

см jsbin на http://jsbin.com/ojosag/edit#javascript,html –

ответ

4

Вы можете попробовать, возможно:

$(document).ready(function(){ 
    var valueTemplate = "http://{subdomain}.mydomain.com"; 
    $("input#alpha").keyup(function(){ 
    var value = $(this).val(); 
    $("input#bravo").val(valueTemplate.replace("{subdomain}",value)); 
    }); 
}); 

Он будет содержать строку шаблона , которая отображает другое поле ввода при изменении текста.

Что было раньше, так это то, что вы были потеря исходного текста шаблон в первой строке заменить.

+0

+1 Хороший подход. Хотя, я думаю, пользователь должен иметь возможность изменять основной домен? –

+0

Спасибо, это отлично работает. Каким будет технический термин для передачи в фигурной скобке в качестве аргумента (чтобы я мог посмотреть его и немного узнать)? – Max

+0

нет необходимости в фигурной скобке в качестве аргумента. вы можете увидеть демонстрацию по адресу http://jsbin.com/ojosag/edit#javascript , html –

2

v.replace ("субдомен", значение);

заявление содержит ошибку

первый раз, когда вы вызываете заменить строка содержит строку субдомен, но во второй раз нет никакого strng как поддомен так это обыкновение заменить его.

см http://jsbin.com/ojosag/edit#preview

1

Это потому, что вы пытаетесь заменить строку subdomain на keyup, который будет заменен на первом keyup самом событии и больше не действительны и для последующего keyups

+0

Ах, я вижу, так что на последующих keyups нет «SUBDOMAIN», следовательно, без аргументов, следовательно, Ничего не произошло. Есть ли метод, отличный от replace(), который я могу использовать со значениями? Или способ сделать replace() работать? Я немного застрял. – Max

0

на втором keyup там не subdomain подстроки в текстовом поле второго

1

Путем сопоставления по образцу URL, вы будете хорошо:

return v.replace(/http:\/\/(.*?)\./,'http://' + value +'.'); 

картина будет соответствовать первому субдомен, так что если пользователь добавляет больше поддоменов, регулярное выражение должно быть изменено.

0

Попробуйте это,

$("input#alpha").keyup(function(){ 
    var value = $(this).val(); 
    $("input#bravo").val(function(i,v){ 
    //return v.replace("subdomain",value); 
    return v= "http://"+value+".mydomain.com"; 
    }); 
}); 
+1

@ Jørgen один лучше .. –

Смежные вопросы