Sumar campos de mi formulario

Espero me puedas ayudar con este tema: en mi web se puede crear un formulario con n campos de la siguiente forma un select con tres opciones 1 - 2 - 3 un campo text donde inserto valores la idea es crear una función que me permita sumar en una casilla todos lo valores del tipo text cuyo select sea 1 en tra casilla los valores del tipo text cuyo select sea 2 y así para el tres. ¿Alguna idea?

1 Respuesta

Respuesta
<script type="text/javascript">
function sumOptions(){
    var a = document.forms["formulario"]; var obj = a.getElementsByTagName("input");
    var total = 0;
    for(var i=0;i<obj.length;i++){
        var sel = obj.parentNode.children[0];
        if(obj.name  != "result" && !isNaN(parseInt(obj.value)) && sel.getAttribute("rel") == sel.value){
            total += parseInt(obj.value);
        }
    }
    a.result.value = total;
}
function startInputs(){
    var a = document.forms["formulario"];var obj = a.getElementsByTagName("input");
    var total = 0;
    for(var i=0;i<obj.length;i++){
        var sel = obj.parentNode.children[0];
        if(obj.name != "result"){
            var sum = parseInt(obj.value);
            if(isNaN(sum) || sel.getAttribute("rel") != sel.value) sum = 0;
            sel.onchange=sumOptions; obj.onchange = sumOptions; obj.onblur = sumOptions;
            total += sum;
        }
    }
    a.result.value = total;    
}
</script>
<body onLoad="startInputs()">
<form name="formulario" method="post">
Input 1 (Suma en 2)
<div name="lol"><select name="select1" rel="2"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select> 
<input type="text" name="text1" value="10" /></div>
Input 2 (Suma en 3)
<div><select name="select2" rel="3"><option value="1">1</option><option value="2">2</option><option value="3" selected>3</option></select> 
<input type="text" name="text2" value="40" /></div>
Input 3 (Suma en 1)
<div><select name="select3" rel="1"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select> 
<input type="text" name="text2" value="50" /></div>
Resultado
<input type="text" name="result" /> <button onClick="sumOptions(); return !1">Sumar</button>
</form>
</body>
<body onLoad="startInputs()">
<form name="formulario" method="post">
Input 1 (Suma en 2)
<div name="lol"><select name="select1" rel="2"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select>
<input type="text" name="text1" value="10" /></div>
Input 2 (Suma en 3)
<div><select name="select2" rel="3"><option value="1">1</option><option value="2">2</option><option value="3" selected>3</option></select>
<input type="text" name="text2" value="40" /></div>
Input 3 (Suma en 1)
<div><select name="select3" rel="1"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select>
<input type="text" name="text2" value="50" /></div>
Resultado
<input type="text" name="result" /> <button onClick="sumOptions(); return !1">Sumar</button>
</form>
</body>

Si el atributo rel del select es igual a la opción seleccionada los datos se suman.
Perdón no te asustes, copie 2 veces el body.
Hola gracias por responder... vamos en buen camino en cuanto al código que me dejaste el post lo probé pero no me sumo o no entendí bajo que condiciones lo hace a y le quite un body. Pero el formulario si tiene la sintaxis que yo explique en el ejemplo tu lo haces con tres filas pues en mi caso serian N solo note algo y es que solo colocaste un campo de resaltado y deberían ser tres uno para la suma de los input text cuyo select sea 1 otro para 2 y otro para el select 3. gracias
Ups... pues yo entendí esto: que me permita sumar en una casilla todos lo valores del tipo text.
¿Haber la sintaxis que quieres es así?
<sel>1|2|3</sel> <input value=3>
<sel>1|2|3</sel> <input value=1>
<sel>1|2|3</sel> <input value=0>
<sel>1|2|3</sel> <input value=3>
<sel>1|2|3</sel> <input value=4>
Suma de selección 1 = 5
Suma de selección 2 = 0
Suma de selección 3 = 6
Si que si amigo eso esl lo que necesito je je gracias por la ayuda
<script type="text/javascript">
function sumOptions(){
    var a = document.forms["formulario"]; var obj = a.getElementsByTagName("input");
    var total = new Array(0,0,0); var results = 0;
    for(var i=0;i<obj.length;i++){
        var sel = obj.parentNode.children[0];
        if(obj.getAttribute("rel") != "result"){
            if(!isNaN(parseInt(obj.value))) total[sel.value-1] += parseInt(obj.value);
        }else{
            results++;
        }
    }
    for(var z=1;z<=results;z++) eval("a.result"+z+".value="+total[z-1]+"");
}
function startInputs(){
    var a = document.forms["formulario"];var obj = a.getElementsByTagName("input");
    var total = new Array(0,0,0); var results = 0;
    for(var i=0;i<obj.length;i++){
        var sel = obj.parentNode.children[0];
        if(obj.getAttribute("rel") != "result"){
            var sum = parseInt(obj.value);
            if(isNaN(sum)) sum = 0;
                total[sel.value-1] += sum;
            sel.onchange=sumOptions; obj.onchange = sumOptions; obj.onblur = sumOptions;
        }else{
            results++;
        }
    }
    for(var z=1;z<=results;z++) eval("a.result"+z+".value="+total[z-1]+"");
}
</script>
<body onLoad="startInputs()">
<form name="formulario" method="post">
<div><select><option value="1">1</option><option value="2">2</option><option value="3" selected>3</option></select>
<input type="text" value="3" /></div>
<div><select><option value="1" selected>1</option><option value="2">2</option><option value="3">3</option></select>
<input type="text" value="1" /></div>
<div><select><option value="1" selected>1</option><option value="2">2</option><option value="3">3</option></select>
<input type="text" value="0" /></div>
<div><select><option value="1">1</option><option value="2">2</option><option value="3" selected>3</option></select>
<input type="text" value="3" /></div>
<div><select><option value="1" selected>1</option><option value="2">2</option><option value="3">3</option></select>
<input type="text" value="4" /></div>
<div>Suma de selección 1 <input type="text" name="result1" rel="result" /></div>
<div>Suma de selección 2 <input type="text" name="result2" rel="result" /></div>
<div>Suma de selección 3 <input type="text" name="result3" rel="result" /></div>
</form>
</body>
Esta es, cada vez que haces un cambio la suma se hace automáticamente, si quieres añadir más selecciones solo añade abajo de los resultados:
Suma de selección N <input type="text" name="resultN" rel="result" />

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas