jQuery トグル関数を使用して、テキスト入力の一部の文字を変更しています。ユーザーがボタンをクリックするたびに、入力値はボタンの値を取得します (これは | と数字です)。ユーザーがボタンをもう一度クリックすると、スクリプトは入力値のボタンの文字を削除する必要があります。
たとえば、入力の値が 0|1|2|3|4|5 で、ボタンの値が 0| の場合 ユーザーが最初にボタンをクリックすると、入力の値は 1|2|3|4|5 に変更されますが、ユーザーがボタンを 2 回目にクリックすると、値は 1|2| に変更されます。 3|4|5|0。
私の正規表現がそれほど正確ではないことに気付くまで、私はそれを行いました。
これらの文字を見てみましょう: 0|1|2|3|4|5|6|7|8|9|10
|1 と |10 の正規表現に一致する 2 つの数値があります。
だから、私はそれを修正する必要があります、私のコードを見てください:
$('.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;
});