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



我想生成目标文本框值取决于其他文本框值,并在以下条件下 -

假定第一个 textbox 值 - " myfile名称"

  1. 如果第一个文本框值不以" of" of" of" of" then目标值将" Copy of [1] myfile name"。
  2. 如果第一个文本框值" Copy of [1] myfile name",则目标值将" Copy of [2] myfile name"。
  3. 如果第一个文本框值" Copy of [2] myfile name",则目标值将" Copy of [3] myfile name"。

即编号

的增量

这是我的代码示例

我该如何使用jQuery?

html:

<div class="panel">
  <input type="text" id="filename" value="filename">
</div>
<div class="panel">
  <input type="text" id="newfilename" value="">
</div>
<div class="panel">
  <button type="button" id="btnGenerate">
    Get File Name
  </button>
</div>

JS:

$('#btnGenerate').click(function(){
  var newname;
    var oldname = $('#filename').val();
  if(typeof oldname !== undefined || oldname != ''){
    if(oldname.indexOf('Copy of')){
            var nCount = parseInt(oldname.match(/([.*])/),10) + 1;
            newname = "Copy of [" + nCount[1] + "] " + oldname;
            $('#newfilename').val(newname); 
    }else{
        newname = "Copy of [1] " + oldname'
    }
    $('#newfilename').val(newname);
  }
});

更新了小提琴

您是如此近,您只是要调整正则稍微添加添加其他语句:

$('#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').click(function(){
  var oldname = $('#filename').val();
  if(typeof oldname !== undefined || oldname != ''){
    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); 
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="panel">
  <input type="text" id="filename" value="Copy of [1] filename">
</div>
<div class="panel">
  <input type="text" id="newfilename" value="">
</div>
<div class="panel">
  <button type="button" id="btnGenerate">
    Get File Name
  </button>
</div>

names =  new Array()
$('#btnGenerate').click(function(){
	var oldname = $('#filename').val();
  names.push(oldname);
  if(oldname != ''){
    
var nCount  = $.grep(names, function (elem) {
    return elem === oldname;
}).length;
      var newname = "Copy of [" +nCount + "] " + oldname;
			$('#newfilename').val(newname);  
  }
 
});
.panel{
  display:block;
  padding: 5px 10px;
}
.panel input{
  width:100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="panel">
  <input type="text" id="filename" value="Name">
</div>
<div class="panel">
  <input type="text" id="newfilename" value="">
</div>
<div class="panel">
  <button type="button" id="btnGenerate">
    Get File Name
  </button>
</div>

我希望这就是您要寻找的。

您的代码正在工作,但是您必须从

更改正则
 /([.*])/ to /d+/

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

  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) == "Copy of"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').click(function(){
	var oldname = $('#filename').val();
    if(typeof oldname !== undefined || oldname != ''){
      if(oldname.substr(0, 7) == "Copy of"){
        var newname = oldname.replace(/[(d+?)]/, function(whole, group1){
        	return "[" + (parseInt(group1, 10)+1) + "]";
        });
        $('#newfilename').val(newname); 
      }
      else
      {
      	$('#newfilename').val("Copy of [1] " + oldname); //prepend Copy of [1]
      }     
  }
});
.panel{
  display:block;
  padding: 5px 10px;
}
.panel input{
  width:100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="panel">
  <input type="text" id="filename" value="Copy of [1] filename">
</div>
<div class="panel">
  <input type="text" id="newfilename" value="">
</div>
<div class="panel">
  <button type="button" id="btnGenerate">
    Get File Name
  </button>
</div>


在一个完全不同的主题上。您正在构建一种文件系统控制。通过该文件名的出现数量(和副本)确定复制金额是否更好?

最新更新