Bonjour à tous:
Cela semble être une question très courante, mais après avoir cherché Google pendant des heures, je ne suis pas en mesure de le comprendre: comment valider une URL comprenant www
sans http
.
Voici ce que j'ai fait:
www.google.com
;text
et utilisé ng-pattern
: Je reçois toujours le www.google.com
invalide;Ainsi, lorsque je clique sur le bouton d'envoi, j'affiche une alerte si le formulaire n'est pas valide (vrai invalide, faux valide). Voici mon Plunker
Merci pour l'aide
Au lieu de lier la regex à la portée, vous pouvez directement ajouter la regex à l'attribut ng-pattern
. Comme ça:
<input type="text" ng-pattern="/^(http[s]?:\/\/){0,1}(www\.){0,1}[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,5}[\.]{0,1}/" ng-model="website">
J'ai mis à jour le plunkr. S'il vous plaît jeter un oeil à cela. Plukr
Si vous souhaitez lier ng-pattern
à partir du contrôleur, votre expression rationnelle ne devrait pas contenir les /
s de début et de fin. Comme ça:
$scope.regex = "^(http[s]?:\\/\\/){0,1}(www\\.){0,1}[a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,5}[\\.]{0,1}$"
Mais, si vous spécifiez directement un modèle tel que ng-pattern="/^(http|https|...)$/"
, vous aurez également besoin du /
s supplémentaire.
Essayez cet exemple
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script type="text/javascript">
angular.module("app",[])
.controller("ctrl",function($scope){
$scope.checkIfUrl = function(){
$scope.isPresent = false;
if ($scope.inputValue != undefined && $scope.inputValue != null) {
var url = /^(http[s]?:\/\/){0,1}(www\.){0,1}[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,5}[\.]{0,1}/;
var Link = $scope.inputValue;
if (Link != "" && Link != undefined && url.test(Link)) {
if (Link.indexOf("http") != 0) {
Link = "http://" + Link;
}
$scope.isPresent = true;
}
}
};
$scope.hyperlinkClick= function(){
var Link = "http://" + $scope.inputValue;
console.log(Link );
window.open(Link);
};
})
</script>
</head>
<body ng-app="app" ng-controller="ctrl">
<input type="text" ng-model="inputValue">
<button ng-click="checkIfUrl()"> check If Url</button>
<a ng-if="isPresent" style="color: blue; cursor: pointer;" ng-click="hyperlinkClick()">{{inputValue}}</a>
<span style="color: black" ng-if="!isPresent">{{inputValue}}</span>
</body>
</html>
Essayez d’utiliser la bibliothèque de validation ng2. Il peut être utilisé pour effectuer la plupart des validations dont vous devriez avoir besoin. Validation personnalisée Angular2, inspirée de la validation jQuery.