[解決済み] コントローラ内部で $setValidity を使用する
2022-03-14 19:03:45
質問
私は、ファイル変更時に何らかの検証を行おうとしています。以下は私のコードです。
ビュー/テンプレート
<input type="file" name="file" id="file"
onchange="angular.element(this).scope().setFile(this)"
required />
<span class="error" ng-show="myForm.file.$error.required">Error</span>
<span class="error" ng-show="myForm.file.$error.size">Selected file is too large</span>
<span class="error" ng-show="myForm.file.$error.filetype">Unsupported File type</span>
コントローラ
angular.module("myapp").controller("myctrl", function($scope) {
$scope.setFile = function(element) {
$scope.$apply(function($scope) {
var fileObject = element.files[0];
$scope.file.fileType =
fileObject.type.toUpperCase().substring(fileObject.type.indexOf("/") + 1);
// Validation
if (!$scope.isValidFileType($scope.file.fileType)) {
myForm.file.$setValidity("myForm.file.$error.filetype", false);
}
if (fileObject.size > 1000*1000*10) {
myForm.file.$setValidity("myForm.file.$error.size", false);
}
});
};
$scope.isValidFileType = function(fileExtension) {
var supportedExtensions = ["doc", "docx", "ppt", "pptx", "jpg", "gif", "png"]; // etc.
return (jQuery.inArray(fileExtension, supportedExtensions) > -1);
}
});
しかし、今現在の呼び出しは
$setValidity
が動作しない。
何か思い当たることはありますか?
解決方法は?
この行です。
myForm.file.$setValidity("myForm.file.$error.size", false);
とする必要があります。
$scope.myForm.file.$setValidity("size", false);
関連
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] ループ内のJavaScriptクロージャ - シンプルな実用例
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] jQueryを使ってドロップダウンリスト(セレクトボックス)から選択されたテキストを取得する
-
[解決済み] Javascriptで文字列の最後の文字を切り取るにはどうしたらいいですか?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] JavaScriptでドロップダウンリストの選択値を取得する
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] コールバック内で正しい `this` にアクセスする方法
-
[解決済み] React JSX内のループ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
jQueryのコピーオブジェクトの説明
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
vueが定義するプライベートフィルタと基本的な使い方
-
Vueでルートネスティングを実装する例
-
[解決済み] テスト
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み】ERROR エラーです。スイッチのname属性が指定されていないフォームコントロールの値アクセッサがない
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ