JavaScript - VAlor de porcentaje que se toma de un campo solo lectura

 
Vista:
Imágen de perfil de Eduardo
Val: 159
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

VAlor de porcentaje que se toma de un campo solo lectura

Publicado por Eduardo (176 intervenciones) el 07/02/2020 23:16:51
Hola a todos tengo esta duda el cual espero me puedan ayudar a resolver

anteriormente me han ayudado a construir un script que suma el valor de dos campos y lo muestra en un campo de resultado, hasta allí no hay problema, el problema es que ese resultado como aparece dinámico toca sacarle el 15% pero como en ese campo no se tipea o digita (pues se supone que es un campo de solo lectura aca le quite la solo lectura para mostrar que solo calcula el porcentaje si se escribe en el resultado) por lo que no aparece en el campo de porcentaje.. como hago para que el resultado de la suma haga el calculo y aparezca en el campo de porcentaje. (solo aparece si escribo el valor directo en el campo resultado) aca pongo el código...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<html>
<head>
</head>
<body>
<script>
//---- SCRIPT SUMA EN CAMPOS--------
function fncSuma(){
    caja=document.forms["form1"].elements;
    var campo1 = caja["campo1"].value.replace(/\./g,"");
    var campo2 = caja["campo2"].value.replace(/\./g,"");
    resultado= +campo1 + +campo2;
    console.log(resultado);
    if(!isNaN(resultado)){
        caja["resultado"].value=resultado;
        format(caja["resultado"]);
	}
}
</script>
<script>
//-----SCRIPT SEPARADOR DE MILES---------
function format(input)
{
var num = input.value.replace(/\./g,'');
if(!isNaN(num)){
num = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1.');
num = num.split('').reverse().join('').replace(/^[\.]/,'');
input.value = num;
}
//-- ALERTA SOLO NUMEROS
else{ alert('Solo se permiten numeros');
input.value = input.value.replace(/[^\d\.]*/g,'');
}
}
</script>
<script>
function calculaPorcentajes(numero){
  var campo4 = document.getElementById("campo4");
  campo4.value=Math.floor(numero*0.15/1000)*1000;
  format(campo4);
}
</script>
<form method="post" name="form1">
 
  <p>+Primer Numero:
    <input type="text" name="campo1" onKeyUp="fncSuma();format(this)" onChange="format(this)"/>
  </p>
  <p>+ Segundo Numero:
    <input type="text" name="campo2" onKeyUp="fncSuma();format(this)" onChange="format(this)"/>
  </p>
  <p>Resultado:
    <input name="resultado" type="text" onKeyUp="calculaPorcentajes(this.value)" onChange="format(this)"/>
</p>
  <p>Porcentaje 15%
    <input type="text" name="campo4" onChange="format(this)" id="campo4"/>
  </p>
</form>
</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

VAlor de porcentaje que se toma de un campo solo lectura

Publicado por Alejandro (532 intervenciones) el 07/02/2020 23:39:38
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function fncSuma(){
    caja=document.forms["form1"].elements;
    var campo1 = caja["campo1"].value.replace(/\./g,"");
    var campo2 = caja["campo2"].value.replace(/\./g,"");
    resultado= +campo1 + +campo2;
    console.log(resultado);
    if(!isNaN(resultado)){
        caja["resultado"].value=calculaPorcentajes(resultado);
        format(caja["resultado"]);
	}
}
 
function calculaPorcentajes(numero){
  return Math.floor(numero*0.15/1000)*1000;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo
Val: 159
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

VAlor de porcentaje que se toma de un campo solo lectura

Publicado por Eduardo (176 intervenciones) el 08/02/2020 06:01:05
Hola Alejandro lo pruebo y me funciona en parte me hace el calculo del % pero no me sale en resultado de la sumatoria "undefined" y como evito que salga NaN en el porcentaje (el NaN sale si paso del primer campo, al segundo y tercero con la tecla Tab) (focus en campo resultado sale el NaN)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<html>
<head>
</head>
<body>
<script>
//---- SCRIPT SUMA EN CAMPOS--------
function fncSuma(){
    caja=document.forms["form1"].elements;
    var campo1 = caja["campo1"].value.replace(/\./g,"");
    var campo2 = caja["campo2"].value.replace(/\./g,"");
    resultado= +campo1 + +campo2;
    console.log(resultado);
    if(!isNaN(resultado)){
        caja["resultado"].value=calculaPorcentajes(resultado);
        format(caja["resultado"]);
	}
}
 
function calculaPorcentajes(numero){
  var campo4 = document.getElementById("campo4");
  campo4.value=Math.floor(numero*0.15/1000)*1000;
  format(campo4);
}
</script>
<script>
//-----SCRIPT SEPARADOR DE MILES---------
function format(input)
{
var num = input.value.replace(/\./g,'');
if(!isNaN(num)){
num = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1.');
num = num.split('').reverse().join('').replace(/^[\.]/,'');
input.value = num;
}
//-- ALERTA SOLO NUMEROS
//else{ alert('Solo se permiten numeros');
//input.value = input.value.replace(/[^\d\.]*/g,'');
//}
}
</script>
<form method="post" name="form1">
 
  <p>+Primer Numero:
    <input type="text" name="campo1" onKeyUp="fncSuma();format(this)" onChange="format(this)"/>
  </p>
  <p>+ Segundo Numero:
    <input type="text" name="campo2" onKeyUp="fncSuma();format(this)" onChange="format(this)"/>
  </p>
  <p>Resultado:
    <input name="resultado" type="text" onKeyUp="calculaPorcentajes(this.value)" onChange="format(this)"/>
</p>
  <p>Porcentaje 15%
    <input type="text" name="campo4" onChange="format(this)" id="campo4"/>
  </p>
</form>
</body>
</html>
1
2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo
Val: 159
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

VAlor de porcentaje que se toma de un campo solo lectura

Publicado por Eduardo (176 intervenciones) el 10/02/2020 04:39:24
Lo he conseguido.. Mil gracias por su ayuda sin usted seria imposible... mil gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<html>
<head>
</head>
<body>
<script>
//---- SCRIPT SUMA EN CAMPOS--------
function fncSuma(){
    caja=document.forms["form1"].elements;
    var campo1 = caja["campo1"].value.replace(/\./g,"");
    var campo2 = caja["campo2"].value.replace(/\./g,"");
    resultado= +campo1 + +campo2;
    console.log(resultado);
    if(!isNaN(resultado)){
       // caja["resultado"].value=calculaPorcentajes(resultado);
	   caja["resultado"].value=resultado;
        format(caja["resultado"]);
		calculaPorcentajes(resultado);
		format(caja["campo4"]);
	}
}
 
function calculaPorcentajes(resultado){
  return Math.floor(numero*0.15/1000)*1000;
}
</script>
<script>
//-----SCRIPT SEPARADOR DE MILES---------
function format(input)
{
var num = input.value.replace(/\./g,'');
if(!isNaN(num)){
num = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1.');
num = num.split('').reverse().join('').replace(/^[\.]/,'');
input.value = num;
}
//-- ALERTA SOLO NUMEROS
else{ alert('Solo se permiten numeros');
input.value = input.value.replace(/[^\d\.]*/g,'');
}
}
</script>
<script>
function calculaPorcentajes(numero){
  var campo4 = document.getElementById("campo4");
  campo4.value=Math.floor(numero*0.15/1000)*1000;
  format(campo4);
}
</script>
<form method="post" name="form1">
 
  <p>+Primer Numero:
    <input type="text" name="campo1" onKeyUp="fncSuma();format(this)" onChange="format(this)"/>
  </p>
  <p>+ Segundo Numero:
    <input type="text" name="campo2" onKeyUp="fncSuma();format(this)" onChange="format(this)"/>
  </p>
  <p>Resultado:
    <input name="resultado" type="text"  onChange="format(this)" readonly/>
</p>
  <p>Porcentaje 15%
    <input name="campo4" type="text" id="campo4" onChange="format(this)" readonly/>
  </p>
</form>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar