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