Javascript:只允许小于输入初始值的值

Posted

技术标签:

【中文标题】Javascript:只允许小于输入初始值的值【英文标题】:Javascript: Allow Only Values less than input initial value 【发布时间】:2017-05-07 14:03:11 【问题描述】:

在我的表单上,我有许多带有预填充十进制值的文本输入字段,用户可以在提交表单之前编辑这些值。

我想知道是否有使用 javascript/jquery 来使每个输入只允许小于其初始值的值。

我觉得它很有挑战性,所以我想把它贴在这里。 谢谢各位

【问题讨论】:

是更新单个元素吗? 恐怕我不明白你更新单个元素的意思;/ 您无法在客户端进行验证。我可以伪造表格并提交;绕过任何客户端检查。您必须在服务器端进行任何认真的验证。当您只是在胡闹时,这不是一个大问题。只知道您不能信任来自客户端的数据。 当然,我会在服务器端验证数据,但我想知道是否可以在客户端添加一个额外的层。 我的意思是你想获取旧值并将其更改为新值然后验证吗? 【参考方案1】:

使用jQuery Validation plugin的max method。

例子:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Makes "field" required and 23 or smaller.</title>
<link rel="stylesheet" href="http://jqueryvalidation.org/files/demo/site-demos.css">

</head>
<body>
<form id="myform">
<label for="field">Required, maximum value 23: </label>
<input type="text" class="left" id="field" name="field">
<br/>
<input type="submit" value="Validate!">
</form>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://cdn.jsdelivr.net/jquery.validation/1.15.0/jquery.validate.min.js"></script>
<script src="http://cdn.jsdelivr.net/jquery.validation/1.15.0/additional-methods.min.js"></script>
<script>
// just for the demos, avoids form submit
jQuery.validator.setDefaults(
  debug: true,
  success: "valid"
);
$( "#myform" ).validate(
  rules: 
    field: 
      required: true,
      max: $('your_input_selector').val()
    
  
);
</script>
</body>
</html>

【讨论】:

感谢@DucFilan 的回答,在我的情况下,我使用的是输入数组。如何使选择器适应它的工作? 它不依赖于选择器,如果你可以将值传递给规则,它就会起作用。【参考方案2】:

这可能会对您有所帮助:

var initialValue = $("#myTextbox1").val()
$("#myTextbox1").on("input", function() 
    if($("#myTextbox1").val() > initialValue) 
        $("#myTextbox1").val(initialValue);
    
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myTextbox1" type="text" value="5"/>

【讨论】:

您应该在比较之前将值转换为数字。 如果您在表单中使用输入,则需要在事件上使用 preventDefault 以取消默认表单操作。【参考方案3】:

此解决方案将输入转换为数字,防止默认表单操作,检查输入值是否为数字,如果不是,它会提醒用户并重置默认输入值,检查新值是否小于原始的,如果不是,则将输入重置为原始值。

HTML

<form id="myForm" action="">
    <input type="text" id="myValue" value="5" />
    <input type="button" id="myButton" value="validate" />
</form>  

JavaScript

var origVal = $('#myValue').val();

$('#myButton').on('click', function(e) 
        var getVal = Number($('#myValue').val());
        e.preventDefault();

        if (isNaN(getVal) === true) 
            alert('The input value has to be a number.');
            $('#myValue').val(origVal);
        

        if (getVal > origVal) 
            alert('The input value has to be less than the original value of ' + origVal);
            $('#myValue').val(origVal);
        
    );

【讨论】:

以上是关于Javascript:只允许小于输入初始值的值的主要内容,如果未能解决你的问题,请参考以下文章

javascript控制input只允许输入数字

Unity中,允许用户通过滑动条或输入值的方式设置参数值

JavaScript:动态更改数据范围规则的值

SQLServer之CHECK约束

Linux root设置初始值的方法

选择最接近的值小于给定值的条目