如何用jQuery中另一个文本字段的值替换一个文本字段的一部分?

我正在尝试使用jQuery根据用户在另一个字段中键入值来动态更新URL(在文本字段中)。

这是我到目前为止所做的: http : //jsbin.com/isiqus/10/edit

它适用于keyup事件的第一个触发器,但不适用于后续的keyup。 任何人都可以告诉我哪里出错了(我只是想掌握jQuery)。

您可以尝试:

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

它将保留一个模板字符串 ,在修改文本时呈现另一个输入字段。

之前发生的事情是您在第一个字符串替换中丢失了原始文本模板。

v.replace( “子域”,值);

语句包含错误

第一次调用时,替换字符串包含字符串子域,但第二次没有像子域这样的strng,所以它不会替换它。

请参阅http://jsbin.com/ojosag/edit#preview

那是因为你试图替换keyup上的字符串subdomain ,它将在第一个keyup事件本身被替换,并且不再对后续的keyups有效

通过匹配URL的模式,你会很好:

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

该模式将匹配第一个子域,因此如果用户添加更多子域,则需要更改正则表达式。

在第二个keyup上,第二个文本字段中没有subdomain字符串

试试这个,

 $("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"; }); });