gpt4 book ai didi

javascript - 使用箭头键盘而不是鼠标时 ng-options 模型未更新

转载 作者:太空狗 更新时间:2023-10-29 14:01:51 24 4
gpt4 key购买 nike

我创建了 js fiddle :Fiddle

我创建了一个带有一些 ng-options 的表单,当你使用按钮而不是鼠标时它有奇怪的行为(只需点击文本框并按“tab”,你可以使用箭头键选择它)。

<form ng-controller="MyApp" id="Apps" name="Apps" ng-submit="SendApp()" role="form" novalidate>
<input type="text" name="title" ng-model="Info.Title" />
<select id="Formula" ng-model ="Info.Genre" ng-change= "ChangeGenre()"
ng-options="id as name for (id, name) in Genre" blank></select>
<select class="form-control" ng-model ="Info.Program"
ng-options="Program as Name for (Program, Name) in Program" ng-change="ChangeProgram()" blank></select>
<h3>{{Info.Genre}}</h3>
<h3>{{Info.Program}}</h3>
<button type=submit>Submit this </button>
</form>

Javascript:

var theApp = angular.module("TheApp", []);

theApp.controller("MyApp", ['$scope', function($scope){
$scope.Program = {"1":"Music","2":"Theater","3":"Comedy"};

$scope.Genre = {"1":"Mystery", "2":"Thriller", "3":"Romance"};

$scope.ChangeProgram = function(){
alert($scope.Info.Program + " " + $scope.Info.Genre);
}
$scope.ChangeGenre = function (){
console.log($scope.Info.Genre);

}
$scope.SendApp = function(){
alert($scope.Info.Program + " " + $scope.Info.Genre);
}
}]);

当您在首次尝试中选择第一个选项时,ng-model 不会更新。

出了什么问题,如何解决?

Update:

正如下面评论中提到的,要重现,请将鼠标输入文本字段,将 Tab 键输入组合框,然后尝试使用键盘选择第二个选项 (Thriller)。这将在第一次尝试时失败,一旦选择了第三个或第一个选项,第二个选项也会被识别。

最佳答案

使用建议的指令here ,这对我有用:

theApp.directive("select", function() {
return {
restrict: "E",
require: "?ngModel",
scope: false,
link: function (scope, element, attrs, ngModel) {
if (!ngModel) {
return;
}
element.bind("keyup", function() {
element.triggerHandler("change");
})
}
}
})

我 fork 了 fiddle .

关于javascript - 使用箭头键盘而不是鼠标时 ng-options 模型未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22630744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com