在javascript的输入数字类型字段中输入值时如何显示输入文本字段?

Posted

技术标签:

【中文标题】在javascript的输入数字类型字段中输入值时如何显示输入文本字段?【英文标题】:How to show a input text field when a value is entered in input number type field in javascript? 【发布时间】:2020-07-05 20:42:47 【问题描述】:

我正在处理一个表单,它有一个名为金额字段的字段,当一个数字大于 2000 时,一旦输入值就会自动显示一个泛卡字段,我尝试使用 javascript 但我结束了通过下面的代码:

    var amnt=document.getElementById("amount").value;
    var pandiv=document.getElementById("pancarddiv");
    function showPanfield()
        if(amnt.value >= 2000)
            pandiv.style.display="block";
        
        else
            pandiv.style.display="none";
        
    
<!doctype html>
<html lang="en">
<head>
<title>Donation Form</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/bootstrap.min.css"/>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.min.js"></script>
<style>
    div#pancarddiv 
        display: none;

</style>
</head>
<body>
    <div class="container-fluid">
        <div class="row">
            <form action="" method="POST">
                <div class="col-lg-12 col-md-12 col-sm-12 form-group">
                    <label>Full Name*</label>
                    <input type="text" class="form-control" id="name" name="fname" required/>
                </div>
                <div class="col-lg-12 col-md-12 col-sm-12 form-group">
                    <label>Postal Address*</label>
                    <textarea class="form-control" rows="4" id="Address" name="address" required></textarea>
                </div>
                <div class="col-lg-6 col-md-6 col-sm-12 form-group">
                    <label>Mobile No.*</label>
                    <input type="number" class="form-control" id="mobileno" name="mobile" required/>
                </div>
                <div class="col-lg-6 col-md-6 col-sm-12 form-group">
                    <label>Email Id*</label>
                    <input type="email" class="form-control" id="email" name="email" required/>
                </div>
                <div class="col-lg-12 col-md-12 col-sm-12 form-group">
                    <label>Amount (Rs.)*</label>
                    <input oninput="showPanfield()" type="number" class="form-control" id="amount" name="amount" required/>
                </div>
                <div class="col-lg-12 col-md-12 col-sm-12 form-group" id="pancarddiv">
                    <label>Pan Card No*</label>
                    <input type="text" class="form-control" id="panid" name="panid"/>
                </div>
                    <div class="col-lg-12 col-md-12 col-sm-12 form-group">
                    <button type="submit" class="btn btn-default">Submit</button>
                </div>
            </form>
        </div>
    </div>
  </body>
</html>

我希望有人可以帮助我解决我落后的问题。

【问题讨论】:

var amnt=document.getElementById("amount").value; 在开始时获取一次值。如果您更改输入中的值 amnt 不会改变 - 将其移动到函数内。 【参考方案1】:

问题是因为您在函数之外获得了金额字段的值。您只需要将 amnt 变量更改为金额元素,而不是其值:

    var amnt=document.getElementById("amount");
    var pandiv=document.getElementById("pancarddiv");
    function showPanfield()
        if(amnt.value >= 2000)
            pandiv.style.display="block";
        
        else
            pandiv.style.display="none";
        
    
<!doctype html>
<html lang="en">
<head>
<title>Donation Form</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/bootstrap.min.css"/>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.min.js"></script>
<style>
    div#pancarddiv 
        display: none;

</style>
</head>
<body>
    <div class="container-fluid">
        <div class="row">
            <form action="" method="POST">
                <div class="col-lg-12 col-md-12 col-sm-12 form-group">
                    <label>Full Name*</label>
                    <input type="text" class="form-control" id="name" name="fname" required/>
                </div>
                <div class="col-lg-12 col-md-12 col-sm-12 form-group">
                    <label>Postal Address*</label>
                    <textarea class="form-control" rows="4" id="Address" name="address" required></textarea>
                </div>
                <div class="col-lg-6 col-md-6 col-sm-12 form-group">
                    <label>Mobile No.*</label>
                    <input type="number" class="form-control" id="mobileno" name="mobile" required/>
                </div>
                <div class="col-lg-6 col-md-6 col-sm-12 form-group">
                    <label>Email Id*</label>
                    <input type="email" class="form-control" id="email" name="email" required/>
                </div>
                <div class="col-lg-12 col-md-12 col-sm-12 form-group">
                    <label>Amount (Rs.)*</label>
                    <input oninput="showPanfield()" type="number" class="form-control" id="amount" name="amount" required/>
                </div>
                <div class="col-lg-12 col-md-12 col-sm-12 form-group" id="pancarddiv">
                    <label>Pan Card No*</label>
                    <input type="text" class="form-control" id="panid" name="panid"/>
                </div>
                    <div class="col-lg-12 col-md-12 col-sm-12 form-group">
                    <button type="submit" class="btn btn-default">Submit</button>
                </div>
            </form>
        </div>
    </div>
  </body>
</html>

【讨论】:

thank u @Cuong Le Ngoc 我弄错了,你能告诉我如何在值大于或等于 2000 后显示泛卡字段后按要求制作? 您可以将 pan 输入作为目标,并使用 pandiv.querySelector("#panid").required = true; 将其设置为 true,并在金额低于 2000 时将其设置回 false 谢谢你给了我一个基本的想法@Cuong Le Ngoc .....我用Javascript做到了,只需在if条件中添加代码(值大于或等于2000:paninput.required =true; 否则为 false 【参考方案2】:

关于这段代码的两个问题

    document.getElementById("amount").value 返回一个字符串,因此如果您希望获得一个数字,您应该将其转换为一个数字(例如,使用 unary + operator)

    if 语句中,您尝试访问amnt 变量的不存在的value 属性,该属性是字符串而不是对象

所以要解决这两个问题,将语句更改为

if (+amnt >= 2000) 
   ...


附带说明,如果您使用内联事件处理程序,则不应使用括号,因为您正在分配函数oninput="showPanfield"

【讨论】:

以上是关于在javascript的输入数字类型字段中输入值时如何显示输入文本字段?的主要内容,如果未能解决你的问题,请参考以下文章

使用文本输入字段时出现 Javascript 中的 NaN

为浮点数反应输入类型 =“数字”

使用 Javascript 进行表单验证 - 字段值必须介于 2 个特定数字之间

javascript:在用户键入或更改文本框值时忽略无效输入[重复]

JavaScript - 如何检查是不是在数字输入字段中输入了字母字符或符号[重复]

Javascript 输入字段值未定义