我正在使用 jQuery 切换功能来更改文本输入的某些字符。每次用户点击一个按钮,输入值都会得到按钮的值(这是一个带有数字的|)。当用户再次点击按钮时,脚本需要移除按钮的字符输入值。
例如,如果输入的值为 0|1|2|3|4|5 并且按钮的值为 0| 值,当用户第一次点击按钮时,输入的值应该变成1|2|3|4|5,但是当用户第二次点击按钮时,输入的值应该变成1|2| 3|4|5|0。
我做到了,它工作得很好,直到我注意到我的正则表达式不是那么准确。
看看这些字符:0|1|2|3|4|5|6|7|8|9|10
有两个数字与正则表达式匹配:|1 和 |10
所以,我需要修复它,看看我的代码:
$('.topmenu_permission').toggle(function(){
var permission = $(this).attr('name');
var valor = $('#userpermission').val();
var pattern = permission, re = new RegExp(pattern, "g");
valor = valor.replace(pattern, '');
$('#userpermission').val(valor + '' + permission);
$(this).css({ 'background' : 'green', 'color' : 'white' });
return false;
}, function(){
var permission = $(this).attr('name');
var valor = $('#userpermission').val();
var pattern = permission, re = new RegExp(pattern, "g");
valor = valor.replace(pattern, '');
$('#userpermission').val(valor);
$(this).css({ 'background' : '#ddd', 'color' : '#000' });
return false;
});
非常感谢你们,我将字符串转换为数组,现在它工作得很好。
看最终代码:
$('.topmenu_permission').toggle(function(){
var needle = $(this).attr('name').replace('|', '');
var myString = $('#userpermission').val();
myString = myString.split('|');
var index = $.inArray(needle, myString);
if( index >= 0)
{
myString.splice(index,1);
}
myString = myString.join('|');
myString = myString + '|' + needle;
$('#userpermission').val(myString);
$(this).css({ 'background' : 'green', 'color' : 'white', 'text-shadow' : 'none' });
return false;
}, function(){
var needle = $(this).attr('name').replace('|', '');
var myString = $('#userpermission').val();
myString = myString.split('|');
var index = $.inArray(needle, myString);
if( index >= 0)
{
myString.splice(index,1);
}
myString = myString.join('|');
$('#userpermission').val(myString);
$(this).css({ 'background' : '#ddd', 'color' : '#000' });
return false;
});