#javascript #html #angularjs #internet-explorer
#javascript #HTML #angularjs #internet-explorer
Вопрос:
Internet Explorer решает использовать первую доступную опцию в качестве «заполнителя», а не оставлять поле выбора пустым, как это делает, например, Chrome.
Без моей скрытой вручную опции <option value="" ng-if="false">Don't display a blank option</option>
была бы пустая опция, которую я не хочу видеть в обязательном поле выбора. Я хочу предоставить пользователю 2 варианта и не позволять им видеть пустой вариант.
Как я могу заставить IE не выбирать первый требуемый параметр. Я не хочу везде использовать javascript для selectIndex -1, потому что у меня много таких полей выбора.
var app = angular.module('myApp', []);
app.controller("myCtrl",function($scope){
$scope.options = [
{id:1, label: 'Option1'},
{id:2, label: 'Option2'}
];
});
<html>
<head>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<select ng-model="option" required id="opt" name="opt" ng-options="option as option.label for option in options track by option.id">
<option value="" ng-if="false">Don't display a blank option</option>
</select>
</div>
</body>
</html>
Ответ №1:
Отключите первую опцию выбора:
<option value="" selected disabled>(placeholder text, if you want)</option>
Технически это дало бы пользователю три варианта вместо двух, хотя они не смогут выбрать отключенный.
Комментарии:
1. Да, на самом деле это не то решение, которое я искал. Спасибо за ввод, хотя.
2. В этом суть моего обязательного поля. Вы не можете ничего выбрать или увидеть, что ничего не доступно, но изначально хотите, чтобы это было пусто, как в Chrome.
Ответ №2:
Действительно чистым способом было бы инициализировать вашу option
модель в вашем контроллере. Должно сработать что-то вроде следующего:
var app = angular.module('myApp', []);
app.controller("myCtrl",function($scope){
$scope.option = '';
$scope.options = [
{id:1, label: 'Option1'},
{id:2, label: 'Option2'}
];
});