0

我正在学习使用 HTML 和 Javascript 制作表单。当我去提交我的表单时,它会处理它,我可以看到结果,但是页面会快速重置,以便表单恢复到其起始状态。如何确保功能完成后页面不会重置?

这是表单的 HTML 和处理它的函数:

<form name="calculator" onsubmit="return calculate(this);">
            Enter the value of the house: $
            <input type="text" name="homeValue" id="homeValue" size="7" /><br>
            <select name="selMortgage" id="selMortgage">
                <option>Select a mortgage length</option>
                <option>15-year mortgage</option>
                <option>30-year mortgage</option>
            </select></br>
            <p class="form"><input type="checkbox" name="chkDiscount" value="discount"/>Good Credit Discount?</p>
            <input type="submit" value="Calculate" />
            <div id="result"></div>
</form>

function calculate(form) {
    var amountEntered = form.homeValue.value;
    var termLength;
    var interestRate;
    var calc;
    document.getElementById("result").innerHTML = "hi";
    if (!/^\d+(\.\d{1,2})?$/.test(amountEntered))
    {
        alert("You did not enter an amount of money");
        //form.homeValue.focus();
        return;
    }
    if (form.chkDiscount.checked == true)
    {
        interestRate = .05;
    }
    else
    {
        interestRate = .06;
    }
    if (form.selMortgage.selectedIndex == 0)
    {
        alert("Select a mortgage length");
    }
    else if (form.selMortgage.selectedIndex == 1)
    {
        termLength = 15;
    }
    else if (form.selMortgage.selectedIndex == 2)
    {
        termLength = 30;
    }
    calc = (Math.pow(1+interestRate,termLength) * amountEntered)/(termLength*12);
    document.getElementById("result").innerHTML = calc.toFixed(2);
}
4

4 回答 4

3

看起来你缺少一个return false.

于 2012-12-14T04:54:09.063 回答
1

由于您正在提交表单,因此由于页面重新加载而导致值丢失。您可以尝试发布您的值,然后在您的表单元素上分配发布值,这样即使刷新后您仍然能够看到提交的 POST 数据。

于 2012-12-14T04:46:49.307 回答
1

尝试这个:

只需return false;在您的 javascript 函数末尾使用。

于 2012-12-14T04:52:40.800 回答
0

提交表单时,会调用 JS 函数calculate。由于该函数不返回任何值,因此将假定为 undefined。而在 JS 中,未定义将被假定为空,表单将被提交到服务器并再次重新加载。这就是您丢失数据的原因。从您的代码中,页面只执行一些 JS 代码。因此,我们可以阻止提交表单以保留您的数据。您可能需要在计算函数中返回 false 以防止提交。示例如下:

document.getElementById("result").innerHTML = calc.toFixed(2); 返回假;

于 2012-12-14T04:50:36.997 回答