Javascript 输入类型=";“文本”;货币验证

Javascript 输入类型=";“文本”;货币验证,javascript,jquery,html,Javascript,Jquery,Html,我当前有一个输入type=“text”,在“keyup”事件中将其转换为货币值。为了保持此功能(正常工作),必须将输入类型设置为“文本”。同时,我希望将最小值设置为“100.00”。 我有什么办法可以做到这一点吗?另外,我是否能够自定义jquery验证消息,使其显示“最低金额$100.00” $('input.number').keyup(函数(事件){ $(this).val(函数(索引,值){ 返回值 .替换(/\D/g,“”) 。替换(/([0-9])([0-9]{2})$/,“$1.$

我当前有一个输入type=“text”,在“keyup”事件中将其转换为货币值。为了保持此功能(正常工作),必须将输入类型设置为“文本”。同时,我希望将最小值设置为“100.00”。 我有什么办法可以做到这一点吗?另外,我是否能够自定义jquery验证消息,使其显示“最低金额$100.00”

$('input.number').keyup(函数(事件){
$(this).val(函数(索引,值){
返回值
.替换(/\D/g,“”)
。替换(/([0-9])([0-9]{2})$/,“$1.$2”)
.替换(/\B(?=(\d{3})+(?!\d)\.?)/g,“,”;
});
});

您可以在输入字段中添加此属性:
minlength=“5”

在JS代码中,您可以添加一个“if”语句来检查此输入是否包含至少5个字符


此外,您还可以在后端添加相同的“if”语句以再次检查。

使用
输入上的
type=“number”
而不是
type=“text”
创建的片段仍然允许jQuery功能工作

验证消息是HTML5,而不是jQuery,因为您没有提供该代码。我做了以下工作:

  • 更改为
    type=“number”
  • 添加了
    min=“100”
  • 添加了
    step=“0.01”
    以处理货币步进
  • $('input.number').keyup(函数(事件){
    $(this).val(函数(索引,值){
    返回值
    .替换(/\D/g,“”)
    。替换(/([0-9])([0-9]{2})$/,“$1.$2”)
    .替换(/\B(?=(\d{3})+(?!\d)\.?)/g,“,”;
    });
    });
    
    
    文本输入(原件):
    数字输入:
    输入小于100,然后按“提交”查看验证。
    谢谢大家的意见。 最后,我保留了用户可以输入的位数的输入type=“text”,并调用了一个函数来对照100检查输入值

    function checkAmount() {  
    var valueBalance = $("#balance").val();
    var valueNumberBalance = parseFloat((valueBalance).replace(/[^\d\.]/, ''));
    
    if (valueNumberBalance < 100) {     
        $("#balance").get(0).setCustomValidity("Minimum Amount of $100.00");
    }
    else {
        $("#balance").get(0).setCustomValidity("");
    }
    
    函数checkAmount(){
    var valueBalance=$(“#balance”).val();
    var valueNumberBalance=parseFloat((valueBalance).replace(/[^\d\.]/,'');
    如果(valueNumberBalance<100){
    $(“#余额”).get(0).setCustomValidity(“最低金额$100.00”);
    }
    否则{
    $(“#余额”).get(0.setCustomValidity(“”);
    }
    

    }

    您可以尝试使用regex进行货币验证

    <div class="col-sm-3 form-group">
                <b>Premium :*</b><br>
                <p><input type="text" class="form-control" oninput="this.className = ''" name="premium" id="premium" valideAtt="currency" title="Premium" onblur="defaultValidation(this)"></p>
                <span id="er_premium" style="display: block; width:100%; float: left;"></span>
    </div> 
    
    <script type="text/javascript">
                var REG_CURRENCY = /(?=.*\d)^\$?(([1-9]\d{0,2}(,\d{3})*)|0)?(\.\d{1,2})?$/;
    
                function defaultValidation(src){
                    var getAttributeValue=src.attributes.valideAtt.value;
    
                    if(getAttributeValue=="currency"){
                        if(!src.value.match(REG_CURRENCY)){
                            $("#"+src.id).addClass("invalid");
                            $("#er_"+src.id).html("<span style=\"color:red\">Please Enter Valide currency Value.<\span>");
                            return false;
                        }else{
                            $("#er_"+src.id).html("");  
                            return true;
                        }
                    }           
                }
    <script>
    
    
    高级:*

    var regu CURRENCY=/(?=.*\d)^\$([1-9]\d{0,2}(,\d{3})*)0)?(\.\d{1,2})?$/; 函数默认验证(src){ var getAttributeValue=src.attributes.valideAtt.value; 如果(getAttributeValue==“货币”){ 如果(!src.value.match(注册货币)){ $(“#”+src.id).addClass(“无效”); $(“#er#”+src.id).html(“请输入有效货币值”); 返回false; }否则{ $(“#er#”+src.id).html(“”); 返回true; } } }
    您可以分享您的尝试吗?您要求我们添加最小值和错误消息,但不清楚您已经尝试了什么,也不清楚是什么给您带来了麻烦,因为您的代码不包含任何与最小值或错误消息相关的内容。@TylerRoper,我尝试使用此处所述的模式,但是它不能识别小数点。我正要评论一下在
    keyup
    上修改用户的输入是多么糟糕的设计,因为它会干扰退格之类的东西,但是你处理得非常好。从用户界面的角度来看,我唯一的抱怨是,我输入了
    1.00
    ,但我的意思是
    2.00
    ,所以我开始尝试删除它,但因为你的格式化程序启动了,它会将光标位置发送到末尾,结果我得到了
    0.02
    ——这根本不是我想要的。这个案子没有简单的解决办法,尽管…@NiettheDarkAbsol,是的,那里没有一个完整的回旋余地。然而,在我看来,最终的结果证明了使用退格键或突出显示输入的小小不便是合理的。我已经尝试过这种方法,在更糟糕的情况下,我可以朝这个方向走。我只是想把Jquery验证和页面上的其他东西一样使用。谢谢你的观点。谢谢。好的,我想这个链接可以满足你的需要。谢谢你的回复。我很感激。它确实部分解决了我的问题。type=“number”仅允许5位数字,我的用户可以输入比允许的数字高得多的数字。有什么办法可以解决这部分问题吗?在输入中添加一个
    max=“99999”
    ,以限制数字。这是一个验证检查,而不是输入检查,因此用户需要提交表单。再次查看时,我对您想要的结果感到困惑:您想将其限制为5位吗?我想允许用户输入9999999999.00,而使用类型号似乎是一项艰巨的任务。所以,我留下了文本,并检查了一个函数的值。谢谢type=“number”并没有将其限制为5位数字,但您在函数中提供的正则表达式添加了一个逗号(,),它不是数字输入中的有效字符,因此在输入第六位数字后将其清除:1234.56