0

我有一个 HTML 页面,其中有两个文本框和一个按钮。我编写了一个计算函数来在文本框中显示结果,但它不起作用。没有在页面上触发警报。

任何人都可以在这里帮助我,我哪里出错了。

<script type="text/javascript">
    function isNumericKey(e)
    {
        if (window.event) { 
        var charCode = window.event.keyCode;
        }
        else if (e) 
        { 
        var charCode = e.which; 
        }
        else 
        { 
        return true; 
        }
        if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
        }
        return true;
    }
    function submitMyNumber()
    {
      alert(1);
           var x = document.getElementById('myInput').value;
        return x.match(/^[0-9]+$/) != null;
        var y = document.getElementById('myInput1').value;
        return y.match(/^[0-9]+$/) != null;
        compute();
    }
    function compute()
    {
       alert(1);
    var a,b,c;
    var qtc=document.form1.myInput.value;
        alert(qtc);
    var hr=document.getByElementById('myinput1').value;
        alert(hr);  
       a=60/hr;
       alert(a);
    b=math.sqrt(a);
      alert(b);
    c=qtc/b;
       alert(c);
       document.write(a + "" + b+ " " + c+ "")
    }
       </script>
     </head>
     <body>
    <form>
    <table align="center" style="border:2px solid black">
        <tr>
            <td>Qtc:</td>
            <td><input type="text" id="myInput" name="myInput" onkeypress="return isNumericKey(event);" /><br /></td></tr>
            <tr>
                <td>Hr:</td>
                <td><input type="text" id="myInput1" name="myInput1" onkeypress="return isNumericKey(event);" /><br />
                </td>
            </tr>
                <tr>
                <td> <input type="submit" id="mySubmit" name="mySubmit" value="Submit only Number" onclick="compute()" />
                </td>
            </tr>
       <tr><td><input type="text" id="result" name="result" value="" /></td></tr>
    </table>
    </form>
</body>
</html>
4

7 回答 7

2

在这个函数中

function submitMyNumber() {
    var x = document.getElementById('myInput').value;
    return x.match(/^[0-9]+$/) != null; // <-- return
    var y = document.getElementById('myInput1').value;
    return y.match(/^[0-9]+$/) != null;
    compute();
}

在第二行,函数正在返回,因此不会永远执行所有下一行。

如果我不得不猜测你可能想做类似的事情

function submitMyNumber() {
    var x = document.getElementById('myInput').value;
    if (!x.match(/^[0-9]+$/)) { return false }

    var y = document.getElementById('myInput1').value;
    if (!y.match(/^[0-9]+$/)) { return false }

    compute();
}
于 2012-10-12T07:21:42.297 回答
0

代码中可能出现的错误

  • 计算函数永远不会被调用
  • 从未设置结果文本框值
于 2012-10-12T07:24:11.120 回答
0

您的代码中没有表单名称:

改变这个从<form>

<form name = "form1" >

PS:当你使用类似的东西时document.form1.myInput.value;

您告诉myInput从带有名称的表单中获取值form1

于 2012-10-12T07:24:34.163 回答
0

将您的 return 语句更改为 if 语句:

function submitMyNumber()
{
  alert(1);
       var x = document.getElementById('myInput').value;
    if (x.match(/^[0-9]+$/) === null ) {
        return;
    }

    var y = document.getElementById('myInput1').value;
    if (y.match(/^[0-9]+$/) === null ) {
        return;
    }

    compute();
}
于 2012-10-12T07:27:50.197 回答
0

我认为功能应该是:

function submitMyNumber() {
    var x = document.getElementById('myInput').value;
    var x_match=  x.match(/^[0-9]+$/) != null;
    //Store x_match in hiddenfield

    var y = document.getElementById('myInput1').value;
    var y_match= y.match(/^[0-9]+$/) != null;
     //Store y_match in hiddenfield

    compute();
    return;
}
于 2012-10-12T07:32:46.343 回答
0

您的代码中有拼写错误:更新:小提琴

  1. compute()功能

    getByElementById('myinput1')应该是getElementById('myInput1') math.sqrt(a); 应该是Math.sqrt(a);

该功能应该看起来像

function compute(){
    var a,b,c;
    var qtc=document.form1.myInput.value;
    alert(qtc);
    var hr=document.getElementById('myInput1').value;
    alert(hr);  
    a=60/hr;
    alert(a);
    b=Math.sqrt(a);
    alert(b);
    c=qtc/b;
    alert(c);
    document.write(a + "" + b+ " " + c+ "")
    //var result = document.getElementById('result');   
    //result.value = c;                
}
  1. 您的 htmlform必须有一个 name=form1<form name="form1">

    <form name="form1">
        <table align="center" style="border:2px solid black">
        <tr> 
           <td>Qtc:</td>
           <td><input type="text" id="myInput" name="myInput" onkeypress="return isNumericKey(event);" /><br /></td>
        </tr>
        <tr>
           <td>Hr:</td>
           <td><input type="text" id="myInput1" name="myInput1" onkeypress="return isNumericKey(event);" /><br /></td>
        </tr>
        <tr>
           <td><button type="button" onclick="compute(); return false;">Submit only Number</button></td>
       </tr>
       <tr><td><input type="text" id="result" name="result" value="" /></td></tr>
       </table>
      </form>
    
于 2012-10-12T07:47:42.307 回答
0

上面的代码中有很多 javascript 错误我不知道你在做什么,但正确的 javascript 将是

function compute()
{
 alert(1);
 var a,b,c;
 var qtc=document.form1.myInput.value;
 alert(qtc);
 var hr=document.getElementById('myInput1').value;
 alert(hr);  
 a=60/hr;
 alert(a);
 b=Math.sqrt(a);
 alert(b);
 c=qtc/b;
 alert(c);
 document.getElementById('result').value = c;
 //document.write(a + "" + b+ " " + c+ "")
 return false;
 }

加上表单标签没有名称字段。它应该像

    <form onsubmit="return false;" 名称="form1">
    

并且提交按钮应该返回 false

    <input type="submit" id="mySubmit" name="mySubmit" value="只提交数字" onclick="compute(); return false;" />
    
否则无论您是否收到 javascript 错误,表单都会继续提交

您使用类似 firebug 的工具来定位您的 javascript 错误

于 2012-10-12T07:53:11.847 回答