Yii Framework Forum: Como Incrustar Javascript En Yii "indicadores De Miles Mientras Se Escribe" - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Como Incrustar Javascript En Yii "indicadores De Miles Mientras Se Escribe" Rate Topic: -----

#1 User is offline   daniel_vald 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 20-August 12

Posted 02 October 2012 - 10:28 AM

Como incrustar javascript en yii antes de enviar la consulta (submit) en las vista en _form
Esto es lo que quiero ejemplo , ya que Chile no usamos comas :)


Si hay alguna extension que haga esto y se me haya pasado en la busqueda se agradece.

a.) El script está en la carpeta js fuera del protected

<script language="JavaScript">
//Código para colocar 
//los indicadores de miles mientras se escribe
function puntitos(donde,caracter){
	pat = /[\*,\+,\(,\),\?,\,$,\[,\],\^]/
	valor = donde.value
	largo = valor.length
	crtr = true
	if(isNaN(caracter) || pat.test(caracter) == true){
		if (pat.test(caracter)==true){ 
			caracter = "\" + caracter
		}
		carcter = new RegExp(caracter,"g")
		valor = valor.replace(carcter,"")
		donde.value = valor
		crtr = false
	}
	else{
		var nums = new Array()
		cont = 0
		for(m=0;m<largo;m++){
			if(valor.charAt(m) == "." || valor.charAt(m) == " ")
				{continue;}
			else{
				nums[cont] = valor.charAt(m)
				cont++
			}
		}
	}
	var cad1="",cad2="",tres=0
	if(largo > 3 && crtr == true){
		for (k=nums.length-1;k>=0;k--){
			cad1 = nums[k]
			cad2 = cad1 + cad2
			tres++
			if((tres%3) == 0){
				if(k!=0){
					cad2 = "." + cad2
				}
			}
		}
		donde.value = cad2
	}
}	
</script>


b.) Lo necesito en la views/monto/_form
Por lo cual e insertado la ruta en este formulario

<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/scripjavamiles.js"></script>


C.) línea que quiero modificar con el evento de java
No comprendo como insertar el código para que trabaje :(

<?php echo $form->textFieldRow($model,'total_monto',array('class'=>'span5')); ?>


Bueno todo aporte se agradece desde ya
0

#2 User is offline   Darril 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 51
  • Joined: 02-June 11

Posted 08 October 2012 - 10:28 AM

Hola daniel.

Si aún no lo solucionaste, espero que esto sea lo que buscas. Reemplaza el script js por este, solo tiene una correccion en la funcion puntitos "caracter = "\" + caracter" por "caracter = "\\" + caracter" y la llamada al evento con jquery.
$(document).ready(function(){
    $('#total_monto').keyup(function(){
        puntitos(this,this.value.charAt(this.value.length-1))
    });
});

function puntitos(donde,caracter){
        pat = /[\*,\+,\(,\),\?,\,$,\[,\],\^]/
        valor = donde.value
        largo = valor.length
        crtr = true
        if(isNaN(caracter) || pat.test(caracter) == true){
                if (pat.test(caracter)==true){ 
                        caracter = "\\" + caracter
                }
                carcter = new RegExp(caracter,"g")
                valor = valor.replace(carcter,"")
                donde.value = valor
                crtr = false
        }
        else{
                var nums = new Array()
                cont = 0
                for(m=0;m<largo;m++){
                        if(valor.charAt(m) == "." || valor.charAt(m) == " ")
                                {continue;}
                        else{
                                nums[cont] = valor.charAt(m)
                                cont++
                        }
                }
        }
        var cad1="",cad2="",tres=0
        if(largo > 3 && crtr == true){
                for (k=nums.length-1;k>=0;k--){
                        cad1 = nums[k]
                        cad2 = cad1 + cad2
                        tres++
                        if((tres%3) == 0){
                                if(k!=0){
                                        cad2 = "." + cad2
                                }
                        }
                }
                donde.value = cad2
        }
}

Ojo que no tiene los tags "<script>".
Y segundo llamas a la funcion desde la vista, en tu caso en el .form creo.
<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/puntosMil.js"></script>


Eso es todo.
0

#3 User is offline   daniel_vald 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 20-August 12

Posted 08 October 2012 - 09:51 PM

Darril estoy bien con automatizar el ingreso de punto OK
de hecho ya tengo todos los código y estoy tratando de implementar YII una vez que tenga todo voy a posteare

me explico
1.- lo primero era lo de los puntos en forma automatica OK (js)
pero esto no hace nada sin el paso siguiente.

2.- quitar los puntos para luego almacenar y o realizar operaciones (suma, resta)
después de investigar un poco por las web tengo un código funcionando que me realiza todo, pero en js + ajax + php
Hay que pasear por js - ajax para luego llegra a php :)
Que yo sepa no encontre una extension que cumpliera mis requisitos :)

una vez tenga implementado muestro todo
0

#4 User is offline   Darril 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 51
  • Joined: 02-June 11

Posted 14 October 2012 - 11:05 PM

Ok, si te sirve de algo, lo que tengo es un campo precio al cuál le apliqué lo que mencionabas de los "puntos", una ves que se envía el formulario le quito los puntos con
$model->precio = str_replace('.', '', $model->precio);

y con eso se guarda en la bd correctamente, listo para realizar cualquier tipo de operaciones, claro tuve que jugar un poquito con la validación del campo(expresiones regulares). Espero postees tu solución.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users