🎉 Acceso anticipado Black Friday: Hasta un 80% de descuento en nuestros cursos

6d: 12h: 55m:54s'
Carlos
Carlos
Laravel
Comparte:

¿Cómo obtener el valor old desde javascript/jquery?

En mi formulario de modificar tengo 3 listas desplegables, que dependen una de otra, y se cargan con ajax. El problema es que si se intenta usar este formulario y se rellena un campo mal lo que se había seleccionado se pierde, por ende, me gustaría obtener los valores "old", ejemplo old(''area_id'). He intentado con 
var id = {{ old('area_id') }};
var id = {!! old('area_id') !!};
var id = "{{ old('area_id') }}";
Pero no funciona, nada funciona.
Makoto
Makoto (1392 xp)
no puedes obtener el valor old porque usas ajax, lo que deberias es almacenar ese valor en el una variable dentro de tu javascript
Jorge Davila
Jorge Davila (838 xp)
Puedes almacenar el valor en tu formulario como un atributo de tu input, algo asi:

<select  name="area_id" data-old="{{old('area_id')}}">
   ...options
</select>
y en tu javascript simplemente puedes tener una function como la siguiente

var getOld=(field)=>
{
 return $('select[name=" '+field+' "').data('old');

}
1
Carlos
Carlos (12 xp)
¿cómo puedo hacer eso?
Nicolas Cumez Nimacachi
Nicolas Cumez Nimacachi (300 xp)
puedes crear una variable global let variable ;
o puedes usar windows.tuvariable

1
Jorge Davila
Jorge Davila (838 xp)
Es una buena solucion, sin embargo en Laravel ya tienes acceso al helper old, por lo que estar declarando variables globales del lado del cliente seria , en mi opinion, un desperdicio  en caso de no ser necesario. Ademas no podemos saber que clase de tostadora maneja el lado del cliente, por lo que es preferible ponerle la menor carga al lado del cliente. Simplemente, si el valor no es un dato "sensible" lo puedes guardar como un attributo en cualquier elemento html:

<input name="area" data-id="{{old('area_id')}}>
En este caso ya esta utilizando un select por lo que  puede hacerlo dentro del mismo select:


<select  name="area_id" data-old="{{old('area_id')}}">
   ...options
</select>
Y en caso de cambiar  o implementar algun framework de front-end, por ejemplo vuejs, simplemente tienes que  pasarle el valor como una propiedad



<AreaSelectorComponent :id="{{old('area_id')}}"></AreaSelectorComponent>