Угловая директива для замены символа из пользовательского ввода

Я хочу обрезать символы из моего пользовательского ввода. Что-то вроде того, что я хочу обрезать '%, *, ), (' Если пользователь дает какой-либо из этих символов, я хочу показать его в окне поиска, но в js я хочу установить значение модели без этих ограниченных символов.

Что-то вроде:

user input 'a&b'

I want to set this in my scope as 'ab'

Этот вопрос (Angular.js - функция контроллера для фильтрации недопустимых символов из ввода не удаляет символы до тех пор, пока не будет введен действительный символ) почти ответы делают то, что я хочу, не показывая это пользователю.
Заранее спасибо.


person arnold    schedule 24.09.2013    source источник
comment
Не обрезать, вы должны заменить   -  person MaxEcho    schedule 24.09.2013
comment
Вы можете использовать $watch в своей директиве, которая следит за значением ng-model. Когда значение изменяется (пользователь вводит символ), он запускает обратный вызов часов, где вы можете определить свой метод замены.   -  person Zack Argyle    schedule 24.09.2013


Ответы (1)


Использовать:

<script>

var user_input = "%this (is) a string*";

var new_string = plainString(user_input)
alert(user_input); 

function plainString()
{
    var findIt = [ '%', '*', ')', '('];
    for(i=0; i<findIt.length; i++) {
        user_input = user_input.replace(findIt[i],'');  
    }
    return;
}

</script>

Или вы можете использовать

<script>

String.prototype.myReplace = function(find, replace) {
    var str = this;
    for (var i = 0; i < find.length; i++) {
        str = str.replace(find[i], replace);
    }
    return str;
};

var user_input = '%this (is) a string*';
var find = ["%", "(", ")", "*"];
user_input = user_input.myReplace(find, "");
alert(user_input);

</script>    

Выход:

this is a string
person MaxEcho    schedule 24.09.2013
comment
Да, я спросил о директиве Angular - person arnold; 24.09.2013