Javascript 生成文本取决于另一个文本框值

Javascript 生成文本取决于另一个文本框值,javascript,jquery,Javascript,Jquery,我想根据另一个文本框值生成目标文本框值,条件如下- 假设第一个文本框值-“我的文件名” 如果第一个文本框值不是以“Copy of”开头,那么目标值将是“复制[1]我的文件名”” 如果第一个文本框值“复制[1]我的文件名”,则目标值将“复制[2]我的文件名” 如果第一个文本框值“复制[2]我的文件名”,则目标值将“复制[3]我的文件名” i、 e号的增量 如何使用jquery实现这一点 HTML: 我对您的代码进行了以下调整: if(oldname.substr(0, 7) == "Copy

我想根据另一个文本框值生成目标文本框值,条件如下-

假设第一个文本框值-“我的文件名

  • 如果第一个文本框值不是以“Copy of”开头,那么目标值将是“
    复制[1]我的文件名”
  • 如果第一个文本框值“
    复制[1]我的文件名
    ”,则目标值将“
    复制[2]我的文件名
  • 如果第一个文本框值“
    复制[2]我的文件名
    ”,则目标值将“
    复制[3]我的文件名
  • i、 e号的增量

    如何使用jquery实现这一点

    HTML:


    我对您的代码进行了以下调整:

      if(oldname.substr(0, 7) == "Copy of"){
        var nCount = parseInt(oldname.match(/\[(\d+?)\]/)[1],10) + 1;
        var newname = oldname.replace(/\[\d+?\]/, "["+nCount+"]");
        $('#newfilename').val(newname);
      }
      else
      {
        $('#newfilename').val("Copy of [1] " + oldname); //prepend Copy of [1]
      } 
    
    查看
    oldname.substr(0,7)==“复制”
    前一个
    indexOf
    跳过了if,没有执行代码

    现在
    [(\d+?)\]
    发挥了神奇的作用。它取出
    [
    ]
    之间的所有数字,并将它们分组到
    ()
    中<代码>\d+?表示获取所有出现1次或n次的数字<代码>?使其在
    ]
    处停止

    var newname=oldname.replace(/\[\d+?\]/,“[“+nCount+”])
    只需在
    []
    块上进行替换,并将其替换为
    nCount


    您甚至可以通过替换来优化它:

        var newname = oldname.replace(/\[(\d+?)\]/, function(whole, group1){
            return "[" + (parseInt(group1, 10)+1) + "]";
        });
    
    $('btnGenerate')。单击(函数(){
    var oldname=$('#filename').val();
    if(typeof oldname!==未定义的| | oldname!=''){
    if(oldname.substr(0,7)=“的副本”){
    var newname=oldname.replace(/\[(\d+?)\]/,函数(整个,组1){
    返回“[”+(parseInt(group1,10)+1)+”];
    });
    $('#newfilename').val(newname);
    }
    其他的
    {
    $('#newfilename').val(“[1]的副本”+oldname);//在[1]的副本前面加上前缀
    }     
    }
    });
    
    .panel{
    显示:块;
    填充物:5px10px;
    }
    .面板输入{
    宽度:100%;
    }
    
    获取文件名
    
    names=新数组()
    $(“#btnGenerate”)。单击(函数(){
    var oldname=$('#filename').val();
    name.push(旧名称);
    如果(旧名称!=''){
    var nCount=$.grep(名称、函数(元素){
    返回元素===oldname;
    }).长度;
    var newname=“复制[”+nCount+“]”+oldname;
    $('#newfilename').val(newname);
    }
    });
    
    .panel{
    显示:块;
    填充物:5px10px;
    }
    .面板输入{
    宽度:100%;
    }
    
    获取文件名
    

    太接近了,只需稍微调整正则表达式并添加else语句:

    $('#btnGenerate').click(function(){
      var oldname = $('#filename').val();
      if(typeof oldname !== undefined || oldname != ''){
    
        //Adding '>-1' in this condition
        if(oldname.indexOf('Copy of')>-1) 
        { 
          var nCount = parseInt(oldname.match(/\[(.*)\]/)[1],10) + 1;
          var file_name = oldname.split('] ')[1];
    
          var newname = "Copy of [" + nCount + "] " + file_name;
        }else{
          var newname = 'Copy of [1] '+oldname;
        }
    
        $('#newfilename').val(newname); 
      }
    });
    
    希望这有帮助

    $('btnGenerate')。单击(函数(){
    var oldname=$('#filename').val();
    if(typeof oldname!==未定义的| | oldname!=''){
    if(oldname.indexOf('Copy of')>-1){
    var nCount=parseInt(oldname.match(/\[(.*)\]/)[1],10)+1;
    var file_name=oldname.split(']')[1];
    var newname=“复制[”+nCount+“]”+文件名;
    }否则{
    var newname='Copy of[1]'+oldname;
    }
    $('#newfilename').val(newname);
    }
    });
    
    
    获取文件名
    
    您的代码正在运行,但您必须从

     /\([.*]\)/ to /\d+/
    

    如果第一个名称是“复制[1]名称”,那么目标名称将是“复制[2]名称”,这就是您要查找的吗?
    $('#btnGenerate').click(function(){
      var oldname = $('#filename').val();
      if(typeof oldname !== undefined || oldname != ''){
    
        //Adding '>-1' in this condition
        if(oldname.indexOf('Copy of')>-1) 
        { 
          var nCount = parseInt(oldname.match(/\[(.*)\]/)[1],10) + 1;
          var file_name = oldname.split('] ')[1];
    
          var newname = "Copy of [" + nCount + "] " + file_name;
        }else{
          var newname = 'Copy of [1] '+oldname;
        }
    
        $('#newfilename').val(newname); 
      }
    });
    
     /\([.*]\)/ to /\d+/