javascript - validar - w3schools angularjs form validation




AngularJS no envía un valor de campo oculto (8)

Asigne directamente el valor al modelo en el atributo data-ng-value . Dado que el intérprete angular no reconoce los campos ocultos como parte de ngModel.

<input type="hidden" name="pfuserid" data-ng-value="newPortfolio.UserId = data.Id"/>

Para un caso de uso específico, tengo que enviar un solo formulario de la "vieja manera". Significa que utilizo un formulario con action = "". La respuesta se transmite, por lo que no estoy recargando la página. Soy completamente consciente de que una aplicación AngularJS típica no enviaría un formulario de esa manera, pero hasta ahora no tengo otra opción.

Dicho esto, traté de poblar algunos campos ocultos de Angular:

<input type="hidden" name="someData" ng-model="data" /> {{data}}

Tenga en cuenta que se muestra el valor correcto en los datos.

El formulario se ve como una forma estándar:

<form id="aaa" name="aaa" action="/reports/aaa.html" method="post">
...
<input type="submit" value="Export" />
</form>

Si presiono enviar, no se envía ningún valor al servidor. Si cambio el campo de entrada para escribir "text", funciona como se esperaba. Mi suposición es que el campo oculto no está realmente poblado, mientras que el campo de texto en realidad se muestra debido al enlace bidireccional.

¿Alguna idea de cómo puedo enviar un campo oculto poblado por AngularJS?


Debajo del Código funcionará para este IFF en el mismo orden en que se menciona, asegúrese de que el orden sea tipo, nombre, ng-modelo ng-init, valor. Eso es.


En el controlador:

$scope.entityId = $routeParams.entityId;

En la vista:

<input type="hidden" name="entityId" ng-model="entity.entityId" ng-init="entity.entityId = entityId" />

Encontré un comportamiento extraño sobre este valor oculto () y no podemos hacer que funcione.

Después de jugar, encontramos que la mejor manera es simplemente definir el valor en el controlador después del alcance del formulario.

.controller('AddController', [$scope, $http, $state, $stateParams, function($scope, $http, $state, $stateParams) {

    $scope.routineForm = {};
    $scope.routineForm.hiddenfield1 = "whatever_value_you_pass_on";

    $scope.sendData = function {

// JSON http post action to API 
}

}])

Logré esto vía -

 <p style="display:none">{{user.role="store_user"}}</p>

No puede usar el doble enlace con el campo oculto. La solución es usar paréntesis:

<input type="hidden" name="someData" value="{{data}}" /> {{data}}

EDITAR: Ver este hilo en github: https://github.com/angular/angular.js/pull/2574

EDITAR:

Desde Angular 1.2, puede usar la directiva 'ng-value' para vincular una expresión al atributo de valor de la entrada. Esta directiva debe usarse con entrada de radio o casilla de verificación pero funciona bien con entrada oculta.

Aquí está la solución que usa ng-value:

<input type="hidden" name="someData" ng-value="data" />

Aquí hay un violín que usa ng-value con una entrada oculta: http://jsfiddle.net/6SD9N


Tuve que enfrentar el mismo problema, realmente necesito enviar una clave de mi script jsp a java. Pasó alrededor de 4 horas o más de mi día para resolverlo.

Incluyo esta etiqueta en mi JavaScript / JSP:

 $scope.sucessMessage = function (){  
    	var message =     ($scope.messages.sucess).format($scope.portfolio.name,$scope.portfolio.id);
    	$scope.inforMessage = message;
    	alert(message);  
}
 

String.prototype.format = function() {
    var formatted = this;
    for( var arg in arguments ) {
        formatted = formatted.replace("{" + arg + "}", arguments[arg]);
    }
    return formatted;
};
<!-- Messages definition -->
<input type="hidden"  name="sucess"   ng-init="messages.sucess='<fmt:message  key='portfolio.create.sucessMessage' />'" >

<!-- Message showed affter insert -->
<div class="alert alert-info" ng-show="(inforMessage.length > 0)">
    {{inforMessage}}
</div>

<!-- properties
  portfolio.create.sucessMessage=Portf\u00f3lio {0} criado com sucesso! ID={1}. -->

El resultado fue: Portfólio 1 criado com sucesso! ID = 3.

Atentamente


Uso un Javascript clásico para establecer el valor de la entrada oculta

$scope.SetPersonValue = function (PersonValue)
{
    document.getElementById('TypeOfPerson').value = PersonValue;
    if (PersonValue != 'person')
    {
        document.getElementById('Discount').checked = false;
        $scope.isCollapsed = true;
    }
    else
    {
        $scope.isCollapsed = false;
    }
}




angularjs