Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   В расчете веса трубы невыполняеться раскрывающийся список, это ошибка? + дополнить... (https://javascript.ru/forum/dom-window/16590-v-raschete-vesa-truby-nevypolnyaetsya-raskryvayushhijjsya-spisok-ehto-oshibka-dopolnit.html)

rashid86 13.04.2011 18:07

В расчете веса трубы невыполняеться раскрывающийся список, это ошибка? + дополнить...
 
Вложений: 2
можите исправить ошибку в первом раскрывающемся списке? (см. 1 рисунок)
js код такой:
<script language="JavaScript">
function GoPage()
{ 
 document.calc.submit(); 
}

function Calculate()
{
 switch(document.calc.typet.value)
 {
 case '1':
 var d=document.calc.diametr.value/1000;
 var s=document.calc.stenka.value/1000;
 var sz=document.calc.dlina.value;
 var pl=document.calc.material.value;
 var p=3.1415;
 var t=p*pl*s*(d-s);
 document.result.m1.value=Math.round(t*100)/100;
 document.result.mt.value=Math.round(t*sz*100)/100;
 break;
 case '2':
 var a=parseFloat(document.calc.a.value);
 var b=parseFloat(document.calc.b.value);
 var s=document.calc.stenka.value;
 var sz=document.calc.dlina.value;
 var pl=document.calc.material.value;
 var k,t;
 if (pl=x50)
 {k=1;}
 else
 {k=pl/7850;}
 t=k*0.0157*s*(a+b-2.86*s);
 document.result.m1.value=Math.round(t*100)/100;
 document.result.mt.value=Math.round(t*sz*100)/100;
 break;
 case '3':
 var sq=document.calc.sq.value;
 var s=document.calc.stenka.value;
 var sz=document.calc.dlina.value;
 var pl=document.calc.material.value;
 var k,t;
 if (pl=='7850')
 {k=1;}
 else
 {k=pl/7850;}
 t=k*0.0157*s*(2*sq-2.86*s)
 document.result.m1.value=Math.round(t*100)/100;
 document.result.mt.value=Math.round(t*sz*100)/100;
 break;
 }
}

function ClearResult()
{
 document.result.reset();
}

function Check()
{
 var errStr='';
 var frm=document.calc;
 switch(frm.typet.value)
 {
 case '1':
 if (frm.diametr.value=='' || !IsNumeric(frm.diametr.value))
 {errStr='Поле диаметр содержит некорректное значение!\n';}
 if (frm.stenka.value=='' || !IsNumeric(frm.stenka.value))
 {
 errStr+='Поле стенка содержит некорректное значение!\n';
 }
 else
 {
 if (frm.stenka.value > (frm.diametr.value/2))
 {
 errStr+='Стенка не может больше половины диаметра!\n';
 frm.stenka.value='';
 }
 }
 if (frm.dlina.value=='' || !IsNumeric(frm.dlina.value))
 {errStr+='Поле длина содержит некорректное значение!';}

 break;
 case '2':
 if (frm.a.value=='' || !IsNumeric(frm.a.value))
 {errStr='Поле длина A содержит некорректное значение!\n';}
 if (frm.b.value=='' || !IsNumeric(frm.b.value))
 {errStr+='Поле длина B содержит некорректное значение!\n';}
 if (frm.stenka.value=='' || !IsNumeric(frm.stenka.value))
 {errStr+='Поле стенка содержит некорректное значение!\n';}
 else
 {
 if (frm.stenka.value > (frm.a.value/2) || frm.stenka.value > (frm.b.value/2))
 {
 errStr+='Стенка не может больше половины высоты!\n';
 frm.stenka.value='';
 }
 }
 if (frm.dlina.value=='' || !IsNumeric(frm.dlina.value))
 {errStr+='Поле длина содержит некорректное значение!';}
 break;
 case '3':
 if (frm.sq.value=='' || !IsNumeric(frm.sq.value))
 {errStr+='Поле длина стороны содержит некорректное значение!\n';}
 if (frm.stenka.value=='' || !IsNumeric(frm.stenka.value))
 {errStr+='Поле стенка содержит некорректное значение!\n';}
 else
 {
 if (frm.stenka.value > (frm.sq.value/2))
 {
 errStr+='Стенка не может больше половины высоты!\n';
 frm.stenka.value='';
 }
 }
 if (frm.dlina.value=='' || !IsNumeric(frm.dlina.value))
 {errStr+='Поле длина содержит некорректное значение!';}
 break;
 }
 if (errStr!=='')
 {
 alert(errStr);
 return false;
 }
 else
 {
 Calculate();
 }
}

function IsNumeric(sText)
{
 var ValidChars = "0123456789.";
 var IsNumber=true;
 var Char;

 
 for (i = 0; i < sText.length && IsNumber == true; i++) 
 { 
 Char = sText.charAt(i); 
 if (ValidChars.indexOf(Char) == -1) 
 {
 IsNumber = false;
 }
 }
 return IsNumber;
 
 }
</script>


HTML код такой:

<form action="" method="post" name="calc">
 <table style="width: 455px; height: 168px;">
 <tbody><tr>
 <td>Тип трубы</td>
 <td><select name="typet" onchange="GoPage();">
 <option value="1" selected="selected">круглая</option>
 <option value="2">прямоугольная</option>
 <option value="3">квадратная</option>
 </select></td>
 </tr>
 <tr>
 <td>Материал</td>
 <td><select name="material" onchange="ClearResult();">
 <option value="912">Полиэтилен низкого давления</option>
 <option value="935">Полиэтилен среднего давления</option>
 <option value="950">Полиэтилен высокого давления</option>
 </select></td>
 </tr>
 <tr>
 <td>Диаметр,мм</td>
 <td><input name="diametr" type="text"></td>
 </tr>
 <tr>
 <td>Стенка, мм</td>
 <td><input name="stenka" type="text"></td>
 </tr>
 <tr>
 <td>Длина, м</td>
 <td><input name="dlina" type="text"></td>
 </tr>
 <tr>
 <td colspan="2" align="center"><input value="Расчет" onclick="Check();" type="button"></td>
 </tr>
 </tbody></table>
</form>
<form action="" method="post" name="result">
 <table>
 <tbody><tr>
 <td>Масса 1 метра, кг</td>
 <td><input name="m1" type="text"></td>
 </tr>
 <tr>
 <td>Общая масса, кг</td>
 <td><input name="mt" type="text"></td>
 </tr>
 </tbody></table>
</form>

рис.1 = http://javascript.ru/forum/attachmen...1&d=1302699738

+ можно как нибудь дополнить функцию дополнения поле, вместо существующих "из раскрывающегося списка материалов" (на выбор) ?
рис.2 = http://javascript.ru/forum/attachmen...1&d=1302699933

рони 13.04.2011 19:10

rashid86,:-/
document.calc.a.value -- инпут или селектор с таким именем отсутствует
строка 28 if (pl=x50) -- ==950

rashid86 13.04.2011 19:17

как поправить?...
 
возможно ли дополнить поле?

rashid86 13.04.2011 19:19

ну а можно ли ввести a.value и b.value, поля для их ввода??? можно ли это сделать?...на сайтах много таких скриптов, и все они с ошибками.


Часовой пояс GMT +3, время: 10:55.