-4

これは私の HTML/Javascript コードです。記入済みのフォームをサーブレットに送信しています。フォームの検証に問題があるようです。理由がわかりません。textbox2 に 0 を入力し、ドロップダウン リスト ボックスから Divide を選択すると、新しい値を入力するように求められるはずです。しかし、そうではなく、ゼロ除算のために例外をスローするサーブレットにプロンプ​​トを表示せずにフォームが送信されます。

<html>
<head>
<title>A simple calculator</title>
<script language="text/javascript">
function validate(b,op)
{
    var newval=b;           
    if(b=="0"&&op=="/")
           newval=prompt("Enter a non-zero value for B:",1);
    document.CalculatorForm.textbox2.value=newval;  
}
</script>
</head>
<body>
<form name="CalculatorForm" method="get" action="http://localhost:8080/hello/CalculatorServlet" onsubmit="validate(this.textbox2.value,this.dropdown.options[this.dropdown.selectedIndex].value);">
A:<input type="text" name="textbox1" id="T1" /><br>
B:<input type="text" name="textbox2" id="T2" /><br>
Operation<br>
<select name="dropdown" id="dd">
<option value="+">Add</option>
<option value="-">Subtract</option>
<option value="*">Multiply</option>
<option value="/">Divide</option>
</select>
<br>
<input type="submit" value="compute"/>
</form>
</body>
</html>
4

1 に答える 1

0

関数を次のように変更します。

function validate()
{
    var b = document.getElementById('T2').value;
    var op = document.getElementById('dd')
    var opValue = op.options[op.selectedIndex].value; 
    if(b=='0' && op=='/')
         //do something  
    else
      // submit
}
于 2012-04-10T15:16:07.727 に答える