【问题标题】:How to compare two numbers from a form?如何比较表格中的两个数字?
【发布时间】:2019-04-29 01:51:37
【问题描述】:

我正在尝试创建两个数字的比较/验证,以便从数据库中检索正确的数字。

我正在使用 PHP、HTML 并从 XAMPP 数据库中检索重量的详细信息以与用户输入进行比较。

我正在使用type='number',因此用户只能输入数字。

HTML 表单

<form action="" method="POST" onSubmit= "return Validator_edit(this)">

            <table class="midTable" align="center" cellpadding="3" cellspacing="3" enctype="multipart/form-data" >
            <tr>

            <tr>
            <th align="right" >Weight:</th>
            <td><input type="number" size="20" name="weight" id="weight" value="<?php echo $weight ?>" disabled="disabled"> * Weight that you have set previously <br/></td>
            </tr>

            <tr>
            <th align="right" >Progress:</th>
            <td><input type="number" name="progress" value="<?php echo $progress ?>" id="progress" > 
            * NOTE : Progress must NOT exceed the weight you have set .</strong><br></h3></td>
            </tr>

            <tr >
            <td colspan='2' align='center'><input type="submit" value="update" name="submit" />&nbsp; 
            </tr>


            </table>
        </form>

验证表格

 <script type="text/javascript" language="javascript">

    function Validator_edit(frm){

            if (frm.progress.value=="")
            { 
                alert("progess must not be empty");
                frm.progress.focus();
                return false;
            }

            if (frm.progress.value > frm.weight.value )
            {   

                alert(" You have exceed the weight.");
                frm.progress.focus();
                return false;
            }   
     }

    </script>

由于某种原因,它能够验证“一些”数字。例如:我已经设置:

 Weight = 50

逻辑上进度低于 50 将能够被验证并返回 true。

但是,它在 3、4、5、6、7、8、9 上失败,即使这些数字小于 50。

我该如何解决这个问题?

【问题讨论】:

  • 为了帮助调试它,请使用您的控制台:添加 console.log(frm.progress.value);console.log(frm.weight.value); 作为您的 Validator_edit 函数的第一行。
  • 我已经尝试过@TimMorton 的建议。该功能能够从数据库和表单上的用户输入中检索权重。但是比较并没有真正起作用。
  • 我不记得 javascript 是否会轻易告诉您它是什么类型的变量:字符串/浮点数/整数。可能它将它作为字符串而不是数字进行比较。如果是这样,您需要将类型更改为浮点数或整数。我不记得方法是什么了。但它会像parseFloat(frm.progress.value) &gt; parseFloat(frm.weight.value)
  • 解决了。非常感谢@TimMorton

标签: javascript php html forms


【解决方案1】:

您的数字可能是字符串形式。您可以尝试在 JavaScript 中使用诸如 Number(); 之类的函数并将其传递给它,以确保您的 表单进度值 的类型是 number

也许,试试类似的东西:

<script type="text/javascript" language="javascript">
    function Validator_edit(frm){
            if (frm.progress.value=="")
            { 
                alert("progess must not be empty");
                frm.progress.focus();
                return false;
            }

            if (Number(frm.progress.value) > Number(frm.weight.value) )
            {   

                alert(" You have exceed the weight.");
                frm.progress.focus();
                return false;
            }   
     }
</script>

或者您可以通过正则表达式传递它,可能类似于:

function is_number(form_progress_number) {
    return /^\d+$/.test(form_progress_number);
}

This link 可能会对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多