【问题标题】:JS validation for restricting only numbers in textfieldJS验证仅限制文本字段中的数字
【发布时间】:2016-05-22 02:38:09
【问题描述】:

我们有一个 magento 电子商务网站。

我们需要以下代码的验证支持只有数字

<input type="text" onkeydown="limit(this);" onkeyup="limit(this); "title="<?php echo $this->__('Zip/Postal Code') ?>"
 name="billing[postcode]" id="billing:postcode" 
 value="<?php echo $this->escapeHtml($this->getAddress()->getPostcode()) ?>"
 class="input-text validate-zip-international
 <?php echo $this->helper('customer/address')->getAttributeValidationClass('postcode') ?>" placeholder="Postal code"/>

JS

function limit(element)
    {
        var max_chars = 6;

        if(element.value.length > max_chars) {
            element.value = element.value.substr(0, max_chars);
        }
    }

现在它只限制数字,但是当我们输入字母时,光标向上移动。我也想删除最后出现的增量按钮

【问题讨论】:

  • 你为什么不使用&lt;input type="number" max="999999" min="0" /&gt;
  • 您也可以使用input type="tel" 进行数字验证,您可以使用以下正则表达式:/^\d$/

标签: javascript


【解决方案1】:

您可以使用 Validation from http://www.formvalidator.net/#default-validators_numbers 示例

<!-- Any numerical value -->
<input type="text" data-validation="number">

<!-- Only allowing float values -->
<input type="text" data-validation="number" data-validation-allowing="float">

<!-- Allowing float values and negative values -->
<input type="text" data-validation="number" data-validation-allowing="float,negative">

<!-- Validate float number with comma separated decimals -->
<input type="text" data-validation="number" data-validation-allowing="float" 
         data-validation-decimal-separator=",">

<!-- Only allowing numbers from 1 to 100 -->
<input type="text" data-validation="number" data-validation-allowing="range[1;100]">

<!-- Only allowing numbers from -50 to 30 -->
<input type="text" data-validation="number" data-validation-allowing="range[-50;30],negative">

<!-- Only allowing numbers from 0.05 to 0.5 -->
<input type="text" data-validation="number" data-validation-allowing="range[0.05;0.5],float">

【讨论】:

  • 我更新了有问题的代码,现在它只限制数字,但是当我们输入字母时,光标向上移动。我也想删除最后出现的增量按钮
  • input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { /* display: none; /-webkit-appearance: none;边距:0; /
  • 您能否在我的代码中添加您的代码并编辑您的答案
  • @beshoy semsem,你确定 是正确的,因为我试图添加一个允许所有正数且仅 -1 作为负数的验证。我使用了allowing="range[-1;9999],negative",但似乎没有按预期的方式工作
【解决方案2】:

HTML5支持type="number",将type="text"改为type="number"

【讨论】:

  • 例如,如果他的客户使用的是 IE6 怎么办?
  • 我更新了有问题的代码,现在它只限制数字,但是当我们输入字母时,光标向上移动。我也想删除最后出现的增量按钮
  • @PhiterFernandes 你还在支持 IE6 上的人们吗?伙计,我不想做你的工作。
  • @BabyinCoding,用这个去掉递增部分stackoverflow.com/questions/3975769/…
【解决方案3】:

更改您的 limit 函数,使其仅验证数字的输入:

function limit(element)
{
    var max_chars = 6,
        regexp = /^\d+$/gs;

    if(element.value.length > max_chars) {
        element.value = element.value.substr(0, max_chars);
    }
    if (!regexp.test(element.value)) {
        alert("Only numbers!");
        return false;
    }
}

test() 方法执行搜索正则之间的匹配 表达式和指定的字符串。返回真或假。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

【讨论】:

  • 我更新了有问题的代码,现在它只限制数字,但是当我们输入字母时,光标向上移动。我也想删除最后出现的增量按钮
猜你喜欢
  • 2016-05-21
  • 2021-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-10
  • 1970-01-01
相关资源
最近更新 更多