こんにちは私が持ってフォローコードではJavaScript/jQueryの中の文字列をサニタイズ
HTML:
<div ng-app="myApp" ng-controller="myController">
<input ng-model="value">
<button ng-click="checkValue()">Check value</button>
</div>
コントローラー:
angular.module("myApp", []).controller("myController", function($scope) {
$scope.value = '';
$scope.acceptedValuesList = {
"Items": [{
id: 1,
name: 'MI'
}, {
id: 2,
name: 'MO'
}, {
id: 3,
name: 'AB'
}]
};
$scope.checkValue = function() {
if (acceptedValuesList.Items.find((item) => item.text == $scope.value)) {
console.log("accepted value");
} else {
// SANITIZE VALUE UNTIL IT'S CORRECT
}
}
});
は私がの1書き込み私の配列( 'MI'、 'MO'または 'AB')に入力されているボタンをクリックすると、th eの文字列を入力し、入力の値が3つの文字列のいずれかと一致する場合は、私のコンソールに小さなメッセージを表示します。これは正常に動作します。だから、別の手紙があれば、私は入力に私の価値を消化したいと思う。たとえば、入力に「ABx」と入力してボタンを押すと、「x」が取り除かれ、入力に「AB」が表示されます。これどうやってするの?私は何かを見つけられなかった、それは私を助けることができた。私はこれが十分明確であることを望む。ありがとう。
EDIT:私自身SOLUTION:
は、これは私のソリューションです:私は私の入力フィールドに値を書き込む:入力値= XY アブ秒;
まず、toUpperCase()
を使用して大文字と小文字を区別します。
より私のリストはfind()
でループし、現在のループしたアイテムで自分の値を検索します。
$scope.value.toUpperCase(); // $scope.value = 'XYABS'
let item = $scope.acceptedValuesList.Items.find((item: any) => $scope.value.search(item.name) >= 0); // item = object in the list with id = 3 and name = 'AB'
その後、アイテムが見つかったかどうかをチェックするので、入力の値は自分のリストのアイテムの1つになります。 substr()
より、名前の長さで始まる位置から値の部分文字列を取得します。その後、私は文字列を取得します。何の項目見つけ、私の文字列が間違っているので、私は入力をクリアしなかった場合:
if(item) {
$scope.value = $scope.value.substr($scope.value.search(item.name), item.name.length); // $scope.value = 'AB'
} else {
$scope.value = '';
}
これは私のために正常に動作しますが、私はそれが十分に明らかだ願っています。ありがとう。 :)
何がQUWFHUIのような文字列を持っている場合** MO ** Xを比較することができますか?または、より良い:UQHFU ** MI ** ASD ** MO **のような文字列をお持ちの場合はどうなりますか? – Xatenev
@ Xatenevこんにちは、私はそれを非常にうまく説明していませんでした。そして、この3つの文字列を入力することができるはずです。キーボードの 'M'または 'A'を押すと、入力に入力されます。その後、あなたが '私'、 'O'または 'B'を押すと、それも入力に入れなければなりませんが、他のキーをタイプすると入力に入れないでください。間違っている... – MrBuggy
@Xatenevだから、 "MIX"と入力すると、入力に "MI"が表示されます。 「MOR」と入力すると、入力に「MO」が表示されます。 「ABC」と入力すると、入力に「AB」が表示されます。 "WRABC"と入力すると、最初の文字は無視されます。 "AB"は入力になければなりません。また、最後の文字 "C"も無視する必要があります。入力に2文字の文字がある場合よりも、もう一度タイプすることはできないはずですので、 "MO"も無視してください... – MrBuggy