ngsubmit functions boton javascript html angularjs

javascript - functions - ¿Cómo deshabilita el botón de envío después de un solo clic para evitar los envíos múltiples en Angularjs?



ng-model (10)

He buscado en toda la web, incluidos varios ejemplos de desbordamiento de pila para encontrar una solución a la pregunta. Para ser específico, he intentado esto:

var disableButton = function() { document.getElementById(''<%= btnSubmit.ClientID %>'').disabled = true; } $scope.isDisabled = false; var someFunc = function() { $scope.isDisabled = true; }

<button OnClientClick="disableButton()" type="submit">Submit</button> <button ng-disabled="isDisabled" type="submit">Submit</button>

Ninguno funcionó como lo anuncian. ¿Cualquier otra sugerencia? Por favor sugerencias angulares solamente. Gracias.


Agregue <input type="checkbox" ng-model="isDisabled"> y agregue isDisabled en el atributo ng-disabled="isDisabled" , así que cuando selecciona el botón de la casilla de verificación se desactiva y desactiva la casilla de verificación, habilite el botón

Por favor vea el enlace http://plnkr.co/edit/e3w54TZEmfj8h5O6BX7B?p=preview


Aquí está la respuesta que tengo que trabajar para mi escenario de envío de formulario único:

$scope.increment = 0; $scope.someFunc = function() { $scope.increment++ if($scope.increment > 1) { return; } else { //do something else } }

No hay directivas o HTMl necesario.


Debido a razones históricas, solo (o) se envía dentro del formulario si el tipo no es ''enviar''.

Según MDN , el botón puede tener atributo de tipo.

<button type="button">Your button</button>

Hace que el botón no tenga un comportamiento por defecto.

Here está la respuesta más detallada.


Encuentra el ejemplo de trabajo también.

HTML

<body ng-app="DisableButtonApp"> <div ng-controller="MyAppCtrl"> <button ng-click="someFunc()" ng-disabled="isDisabled" ng-model="isDisabled"type="submit">Submit</button> </div> </body>

JS:

angular.module(''DisableButtonApp'', []) .controller(''MyAppCtrl'',[''$scope'', function($scope){ $scope.isDisabled = false; $scope.someFunc = function(){ alert("Clicked!"); $scope.isDisabled = true; return false; }; }]);

Demo


Estuviste muy cerca de la respuesta. Lo único que se perdió fue llamar a la función someFunc() en el botón usando ng-click .

El otro problema es que, en su controlador, la función debe ser $scope.someFunc() y no var someFunc()

Ejemplo de trabajo: su index.html debería ser como:

<html> <head> <script data-require="[email protected]" data-semver="1.3.15" src="https://code.angularjs.org/1.3.15/angular.js"></script> <link rel="stylesheet" href="style.css" /> <script src="script.js"></script> <script src="application.js"></script> </head> <body ng-app="demo" ng-controller="demoController"> <button type="submit" ng-disabled="isDisabled" ng-click="disableButton()"> Click me to disable myself</button> </body> </html>

Y tu controlador application.js será como:

angular.module(''demo'', []) .controller(''demoController'',function($scope){ $scope.isDisabled = false; $scope.disableButton = function() { $scope.isDisabled = true; } });


Intenta usar esto:

<input type="text" ng-model="email" ng-disabled="button" required ng-init="button=true"> <a class="btn" ng-click="button=false">enable edit</a> <a class="btn" ng-click="button=true">disable edit</a> <a class="btn" ng-click="button=!button">toggle edit</a>

También hay diferentes enfoques para lograr esta funcionalidad, puede ir a través de los siguientes enlaces, seguramente le ayudarán.

https://.com/a/21638542/4373895

https://.com/a/22720438/4373895

https://.com/a/17083781/4373895


No me gustó ninguna de las respuestas proporcionadas, ya que todas ellas isDisabled el alcance global con la variable isDisabled , ¿por qué no hacerlo de esta manera?

<button type="submit" ng-click="disableButton($event)">Submit</button>

.

$scope.disableButton = function($event) { $event.currentTarget.disabled = true; };

si si necesita enviar un formulario antes de deshabilitar.

este código no está probado

<form ng-submit="disableFormSubmitButton($event)"> <button type="submit">Submit</button> </form>

.

$scope.disableFormSubmitButton = function($event) { $($event).find(''[type=submit]'').prop(''disabled'',true); };


Otra forma es escribir una directiva que deshabilita el botón de envío.

angular.module(''myApp'').directive(''clickedDisable'', function(){ return { restrict: ''A'', link: function(scope, ele, attrs){ $(ele).click(function(){ $(ele).attr(''disabled'', true); }); } };

Y en el HTML

<button type="submit" clicked-disable></button>


Para lo que valga, puedes hacer eso directamente en la plantilla:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <body ng-app> <button ng-disabled="isDisabled" ng-click="isDisabled=true" type="submit">Submit</button> isDisabled={{isDisabled}} </body>


<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <body ng-app> <button type="submit" name="submit" class="btn btn-success" ng-disabled="isDisabled" ng-click="isDisabled=true">Hochladen</button> isDisabled={{isDisabled}} </body>