Итак, вот мой наблюдаемый код:
var suggestions =
Rx.Observable.fromEvent(textInput, 'keyup')
.pluck('target','value')
.filter( (text) => {
text = text.trim();
if (!text.length) // empty input field
{
this.username_validation_display("empty");
}
else if (!/^\w{1,20}$/.test(text))
{
this.username_validation_display("invalid");
return false;
}
return text.length > 0;
})
.debounceTime(300)
.distinctUntilChanged()
.switchMap(term => {
return $.ajax({
type: "post",
url: "src/php/search.php",
data: {
username: term,
type: "username"
}
}).promise();
}
);
suggestions.subscribe(
(r) =>
{
let j = JSON.parse(r);
if (j.length)
{
this.username_validation_display("taken");
}
else
{
this.username_validation_display("valid");
}
},
function (e)
{
console.log(e);
}
);
Проблема заключается в том, когда вход пуст. У меня есть еще один фрагмент кода, который в основном возвращает "error: empty input", но он становится переопределяемым возвращаемым наблюдаемым. Поэтому мне было интересно, есть ли способ игнорировать все наблюдаемые, если text.length
равно 0, но также переписывать, когда длина текста не равна нулю.
Я думал о unsubscribe
, но не знаю, куда его вставить, чтобы попробовать.