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

时间:2012-02-10 06:38:16

标签: javascript jquery

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

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

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

6 个答案:

答案 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( “子域”,值);

语句包含错误

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

参考http://jsbin.com/ojosag/edit#preview

答案 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";
   });
 });