Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.01 centavo não funciona #20

Open
ademir10 opened this issue Jun 12, 2019 · 5 comments
Open

0.01 centavo não funciona #20

ademir10 opened this issue Jun 12, 2019 · 5 comments

Comments

@ademir10
Copy link

Boa tarde!
estou tentando pegar o valor exato digitado no ion-input e não sei porque o valor que chega não é igual.
Notei que se, eu digitar 1 centavo 1:
no input eu enxergo 1 ao invés de 0.01
Esse é o o valor que chega na minha action 1

Ou se eu digitar 001:
esse é o valor que chega na minha action: .001

Esse é o meu ambiente:
Ionic:
Ionic CLI : 5.0.1 (/usr/local/lib/node_modules/ionic)
Ionic Framework : @ionic/angular 4.4.2
@angular-devkit/build-angular : 0.13.9
@angular-devkit/schematics : 7.3.9
@angular/cli : 7.3.9
@ionic/angular-toolkit : 1.5.1

Cordova:
Cordova CLI : 9.0.0 ([email protected])
Cordova Platforms : android 7.1.4, ios 4.5.5
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 4.0.1, (and 15 other plugins)
Utility:
cordova-res : not installed
native-run : 0.2.2
System:
Android SDK Tools : 26.1.1 (/Users/dede/Library/Android/sdk)
ios-deploy : 1.9.4
NodeJS : v10.15.3 (/usr/local/bin/node)
npm : 6.4.1
OS : macOS Mojave
Xcode : Xcode 10.2.1 Build version 10E1001

Modulo, view e action respectivamente:

import { BrMaskerModule } from 'br-mask';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
BrMaskerModule,
ReactiveFormsModule,
RouterModule.forChild(routes)
],

ACTION:
amount: string;
valor_div:any;
amountChange(data) {
this.valor_div = $('#input input').val();
console.log('Esse é o valor_div ' + parseFloat(this.valor_div));
console.log('Esse é o amount ' + this.amount);
if(parseFloat(this.valor_div) > parseFloat(this.total_a_receber)){
this.buttonDisabled = true;
this.simple_alert({header: 'Atenção!', subheader: 'Não é permitido efetuar baixas com o valor informado maior que o total restante R$ ' + parseFloat(this.total_a_receber).toFixed(2) + ' a receber!'});
} else {
this.buttonDisabled = false;
}
}

VIEW:

<ion-input color="black" id="input" (keyup)="amountChange(({val_parc: t.value_doc}))" placeholder="0.00" type="tel" [brmasker]="{money: true, decimalCaracter: '.', decimal: '2'}" clearInput clearOnEdit="false">

Qualquer ajuda é bem vinda, estou a horas tentando resolver este problema e não consigo.
Obrigado!

@monica-santos
Copy link

@ademir10 conseguiu achar alguma solução?

@ademir10
Copy link
Author

ademir10 commented May 8, 2020

@ademir10 conseguiu achar alguma solução?

consegui fazer funcionar, mais notei que, se você digitar apenas 1 após dar o foco no input, ele vai entender no primeiro momento que você digitou somente 1, agora se você digitar 001, ai sim ele entende que você quer dizer 0,01.

Portanto é somente depois do segundo digito que a mascara entra em ação, mais está funcionando corretamente sim.

Exemplo caso você não tenha feito nada ainda:
arquivo.page.ts

import {FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms'

export class {
DECIMAL_SEPARATOR=".";
GROUP_SEPARATOR=",";
}

constructor (
private formBuilder: FormBuilder,
)

//Chama essa action quando você digita alguma coisa no input substituindo virgula por ponto caso precise
amountChange(data:any) {
  var valor_digitado = this.emprestimoData.valorEmprestimo.toString().replace(/\,/g,'.');

}

Na view:

Valor R$
<ion-input (keyup)="amountChange(({val_emprestimo: credito_disponivel}))" [(ngModel)]="emprestimoData.valorEmprestimo" formControlName="valoremprestimo" name="valoremprestimo" type="tel" maxlength="9" [brmasker]="{money:true}" clearInput clearOnEdit="false">

Hope it help you, God bless!

@asamarcos
Copy link

Dei uma olhada no repositório e esse comportamento é proposital no tipo de mascara money. Para fazer com que a máscara funcione no primeiro dígito, é só informar como 'false' o parâmetro moneyInitHasInt, como indicado abaixo:

<ion-input [brmasker]="{money:true, moneyInitHasInt: false}"></ion-input>

@ademir10
Copy link
Author

ademir10 commented Jun 4, 2020

Dei uma olhada no repositório e esse comportamento é proposital no tipo de mascara money. Para fazer com que a máscara funcione no primeiro dígito, é só informar como 'false' o parâmetro moneyInitHasInt, como indicado abaixo:

<ion-input [brmasker]="{money:true, moneyInitHasInt: false}"></ion-input>

valeu pelo feedback Marcos! vou experimentar, brigadão man!

@rdanielst
Copy link

vocês conseguem digitar 0, no meu caso para entrar com um valor terminado em 0 não funciona rs
Por exemplo R$ 3,50: não é possível digitar o zero

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants