如何用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"; }); });