我正在尝试使用jQuery根据用户在另一个字段中键入值来动态更新URL(在文本字段中)。
这是我到目前为止所得到的:http://jsbin.com/isiqus/10/edit
它适用于keyup事件的第一个触发器,但不适用于后续的keyup。任何人都可以告诉我哪里出错了(我只是想掌握jQuery)。
答案 0 :(得分: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));
});
});
它将保留模板字符串,在修改文本时呈现其他输入字段。
之前发生的事情是您在第一个字符串替换中丢失原始文本模板。
答案 1 :(得分:2)
<强> v.replace( “子域”,值); 强>
语句包含错误
第一次调用时,替换字符串包含字符串子域,但第二次没有像子域一样的字符串,所以它不会替换它。
答案 2 :(得分:1)
这是因为您正在尝试替换subdomain
上的字符串keyup
,该字符串将在第一个keyup
事件本身上被替换,并且不再对后续的键盘有效
答案 3 :(得分:1)
通过匹配网址的模式,你会很好:
return v.replace(/http:\/\/(.*?)\./,'http://' + value +'.');
模式将匹配第一个子域,因此如果用户添加更多子域,则需要更改正则表达式。
答案 4 :(得分:0)
在第二个keyup
上,第二个文本字段中没有subdomain
子字符串
答案 5 :(得分: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";
});
});