JavaScript - combinar nombre textarea y form

   
Vista:

combinar nombre textarea y form

Publicado por Ricchar (6 intervenciones) el 13/01/2014 20:49:10
Buenas! Estoy un poco desesperado porque he probado mil formas y no hay manera, os escribo un poco de codigo para ver si explico lo que quiero hacer.
Yo tengo esta funcion en javascript

1
2
3
4
5
6
7
8
9
10
11
function initializeVar(option1,option2,number){
 
var v = document.forms['variables'];
var txtareaname = document.getElementsByTagName("textarea");
 
if(option1.checked)
{
for (var i=0;i<number.value;i++)
v.id.value = 'N' + v.id.value;
}
}

Lo que me gustaria hacer es algo asi como v.txtareaname.value, en vez de, v.id.value, ya que me gustaria usar la misma funcion para los varios textarea que tengo en mi html y no una funcion para cada textarea. Creo que no es necesario el html pero si lo necesitais os puedo pegar un trozo.

Espero que alguien pueda ayudarme,

Gracias por adelantado!! Saludos!
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 xve

combinar nombre textarea y form

Publicado por xve (1595 intervenciones) el 14/01/2014 07:58:26
Hola Ricchar, si puedes estaría bien que nos mostraras los formularios, y como llamas a la función de js, ya que depende de si tienes id's en el formulario o en los campos, se puede hacer de una u otra manera.
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

combinar nombre textarea y form

Publicado por Ricchar (6 intervenciones) el 14/01/2014 12:12:14
Os dejo todo el codigo para que se entienda mejor

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html class="no-js" lang="en">
<head>
 
<meta name="description" content="" />
 
    <meta charset='iso-8859-1'>
<script type="text/javascript">
 
function initializeVar(option1,option2,number){
 
    var v = document.forms['variables'];
    var txtAreas = document.getElementsByTagName("textarea");
    var txtareaname = txtAreas[0].name
 
    if(option1.checked)
    {
    for (var i=0;i<number.value;i++)
         v.id.value = 'N' + v.id.value;
    }
}
</script>
    <title>Test</title>
</head>
 
<body>
 
<a href="index.html">Test</a></div>
    &nbsp;
 
  <ul>
 
    <li><a href="check.html">Test</a></li>
    <li><a href="help.html">Help</a></li>
    <li><a href="#">About</a></li>
  </ul>
 
<form action="createtxt.php" method="post" enctype ="multipart/form-data" name="variables">
<p>Enter sequence:
<input type="checkbox" name="option1" value="n"> N
<input type="checkbox" name="option2" value="a"> A
<input name="number" type="number" placeholder="write a number" />
<button type="button" onclick=initializeVar(this,option1,option2,number)>Create it!</button>
 
<textarea id="id" name="id" rows="7" cols="60"></textarea>
 
<p>Enter sequence: </p>
<input type="checkbox" name="option1" value="n"> N
<input type="checkbox" name="option2" value="a"> A
<input name="number" type="number" placeholder="write a number" />
<button type="button" onclick=initializeVar(this,option1,option2,number)>Create it!</button>
<textarea id="srna" name="srna" rows="7" cols="60"></textarea>
 
<p><input type="submit" value="Check form">
   <input type="reset" value="Delete all"></p>
</form>
 
</body>
 
</html>

La idea es cambiar el v.id.value por v.txtareaname.value, para hacer mas flexible el codigo y usar solamente una funcion.
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 xve

combinar nombre textarea y form

Publicado por xve (1595 intervenciones) el 14/01/2014 15:23:53
Hola Ricchar, aqui te adjunto el código que hace lo que solicitas... he tenido que añadir la libreria jquery para ello, ya que creo que es la mejor manera.

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html class="no-js" lang="en">
<head>
    <meta name="description" content="" />
    <meta charset='iso-8859-1'>
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script type="text/javascript">
    function initializeVar(position,option1,option2,number)
    {
        var textarea=$(position).next("textarea").val();
        var v = document.forms['variables'];
        var txtAreas = document.getElementsByTagName("textarea");
        var txtareaname = txtAreas[0].name
 
        if(option1.checked)
        {
        for (var i=0;i<number.value;i++)
            v.id.value = 'N' + v.id.value;
        }
    }
    </script>
    <title>Test</title>
</head>
 
<body>
 
<a href="index.html">Test</a>
&nbsp;
<ul>
    <li><a href="check.html">Test</a></li>
    <li><a href="help.html">Help</a></li>
    <li><a href="#">About</a></li>
</ul>
 
<form action="createtxt.php" method="post" enctype ="multipart/form-data" name="variables">
    <p>Enter sequence:
    <input type="checkbox" name="option1" value="n"> N
    <input type="checkbox" name="option2" value="a"> A
    <input name="number" type="number" placeholder="write a number" />
    <button type="button" onclick="initializeVar(this,option1,option2,number)">Create it!</button>
 
    <textarea id="id" name="id" rows="7" cols="60"></textarea>
 
    <p>Enter sequence: </p>
    <input type="checkbox" name="option1" value="n"> N
    <input type="checkbox" name="option2" value="a"> A
    <input name="number" type="number" placeholder="write a number" />
    <button type="button" onclick="initializeVar(this,option1,option2,number)">Create it!</button>
    <textarea id="srna" name="srna" rows="7" cols="60"></textarea>
 
    <p><input type="submit" value="Check form">
    <input type="reset" value="Delete all"></p>
</form>
 
</body>
</html>

Coméntanos, ok?
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

combinar nombre textarea y form

Publicado por Ricchar (6 intervenciones) el 14/01/2014 15:49:25
Lo acabo de probar y no me funciona, he probado a poner un alert con la variable que tu me has creado y me aparece en blanco....Pero creo que no me he explicado bien....
Yo los id de los textarea si puedo cogerlos con
1
2
var txtAreas = document.getElementsByTagName("textarea");
var txtareaname = txtAreas[0].name

Mi problema viene cuando quiero acceder a las variables del form, es decir, yo hago esto:
1
var v = document.forms['variables'];
Y ahi ya tengo las variables, y si por ejemplo quiero darle algun valor, ejecuto
1
v.id.value = 'N';
Y ya lo tengo, pero lo que quiero es que donde va ese id, poner la variable txtareaname, es decir, como concatenar, lo que necesito es juntar v. con la variable txtareaname, he probado todas estas combinaciones
1
2
3
4
5
6
v.textareaname.value
v.+txtareaname+.value
v+.txtareaname.+value
v.[txtareaname].value
v.'txtareaname'.value
v."txtareaname".value

Nada de eso ha servido...
Desde ya te doy las gracias por las molestias que te has tomado
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

combinar nombre textarea y form

Publicado por Ricchar (6 intervenciones) el 17/01/2014 13:19:18
Nadie sabe como podria hacerlo?

Saludos!
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 xve

combinar nombre textarea y form

Publicado por xve (1595 intervenciones) el 17/01/2014 15:46:35
Hola Ricchar, perdona, te entendí mal... tu lo que quieres es utilizar el contenido de una variable com el nombre de un campo...

Para ello, tienes que utilizar la función eval()... algo así:
1
eval("v."+txtareaname+".value");

Coméntanos si es esto lo que necesitas.
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

combinar nombre textarea y form

Publicado por Ricchar (6 intervenciones) el 21/01/2014 13:40:49
Pero esa funcion no la puedo igualar no?

Es decir, yo estoy intentando hacer esto:
1
eval("v."+txtareaname+".value") = 'N' + eval("v."+txtareaname+".value");

Pero no me funciona...He intentado meter tambien la funcion eval en una variable es decir, algo asi
1
2
var ejemplo = eval("v."+txtareaname+".value");
ejemplo = 'N' +  eval("v."+txtareaname+".value");

Pero tampoco funciona, sin embargo, esto si me funciona
1
v.id.value = eval("v."+txtareaname+".value")

Como podria hacerlo?

Gracias de nuevo!
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

combinar nombre textarea y form

Publicado por Ricchar (6 intervenciones) el 21/01/2014 15:17:31
Lo conseguí, dejo la solucion por si a alguien le ayuda

1
v[txtareaname].value = 'el_valor' + v[txtareaname].value;


Saludos y gracias por la ayuda!

PD: se puede cerrar o dar como solucionado
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
Imágen de perfil de xve

combinar nombre textarea y form

Publicado por xve (1595 intervenciones) el 21/01/2014 15:52:29
Gracias por comentarlo Richhar... buena solución!!!! la desconocía por completo.
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 xve

combinar nombre textarea y form

Publicado por xve (1595 intervenciones) el 21/01/2014 15:34:27
Hola Ricchard, yo lo he probado así y me ha funcionado bien...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
</head>
 
<body>
    <form action="createtxt.php" method="post" enctype ="multipart/form-data" name="variables">
        <textarea name="txt">texto de prueba</textarea>
    </form>
 
    <script>
        var txtareaname="txt";
        var v = document.forms['variables'];
        var valor=eval("v."+txtareaname+".value");
        valor="N"+valor;
        console.log(valor);
    </script>
</body>
</html>

Coméntanos, ok?
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