【问题标题】:validate negative number in jquery with one decimal place验证 jquery 中的负数,保留一位小数
【发布时间】:2012-06-15 11:27:46
【问题描述】:

我想通过以下方式使用 jauery 验证文本字段:

1.文本字段只取 0-9,只有一位小数;和

2。如果输入的金额不是负数,则将负号放在 求输入的数字!

$('[name="pm"]').keyup(function() {

    //?

 });

【问题讨论】:

  • 这不是 jQuery 的东西,而是 JavaScript 的东西。我已经为你添加了标签。
  • 无意冒犯,但这看起来像是“给我代码”类型的问题。您应该考虑先告诉我们您尝试了什么。

标签: javascript jquery validation jquery-validate


【解决方案1】:

您可以通过regular expressionString#match 验证字符串:

if (this.value.match(/^-?\d+(?:\.\d){0,1}$/)) {
    // It's valid
}

或者更多的 jQuery-ish(上面不可靠地支持 textarea,只支持 input):

if ($(this).val().match(/^-?\d+(?:\.\d){0,1}$/)) {
    // It's valid
}

(例如,this.value => $(this).val().)

分解正则表达式:

  • ^ - 匹配字符串开头
  • -? - 一个可选的- 字符
  • \d+ - 一位或多位数字 (0-9)
  • (?:...) - 非捕获分组,包含:
    • \.\d - 最多一个 . 后跟一个数字
  • {0,1} - 允许非捕获分组零次或一次
  • $ - 匹配字符串结尾

请注意,以上拒绝-.1。如果你想接受它,它会变得更复杂,但上面的链接应该会有所帮助。

Gratuitous live example | source

【讨论】:

  • 我想在按键事件中验证它,如上所述。当我按负号时 - 在开始时,它不会。但我的要求是......帖子的第二点!(主要)
  • 然后你可以做这个测试,但是删除-?部分,然后检查$(this).val().indexOf('-') == 0(如果它以-开头)如果不是,说var val = $(this).val()然后$(this).val("-" + val) (啊,为什么我总是忘记:@ShahidGhafoor)
  • @ShahidGhafoor:强烈建议不要对 keyup 进行验证,或者至少不要以任何侵入性方式进行验证。在您的特定情况下,您可以通过首先检查 this.value !== "-" 来轻松避免不必要的“无效”标志,因为您的字符串非常简单。例如,if (this.value !== "-") { /* ...do validation... */ }.
【解决方案2】:

指定解决方案的排列和补充:

来自@Some_Coder 的回答

1) 先这样做

http://www.texotela.co.uk/code/jquery/numeric/

来自组织者的修改回答

$('[name="pm"]').keyup(function() { if($(this).val().indexOf('-') != 0){ var val = $(this).val(); $(this).val("-" + val); } if ($(this).val() == '-') { $(this).val(''); } });

你会得到想要的结果!

【讨论】:

    【解决方案3】:

    试试这段代码。

    $('[name="pm"]').keyup(function() { if($(this).val().indexOf('-') != 0){ var val = $(this).val(); $(this).val("-" + val); } });

    如果它不起作用,请将其替换为 $('[name="pm"]')

    【讨论】:

    • 不错!但是有两个问题! 1)它需要多个负号,我只需要一个 - 开始时的符号。2)如果用户输入金额然后在开始时为负号,此时,您建议的解决方案,在开始时放置 - 符号,即使用户只需点击在文本字段上。
    • 应付我上面的帖子.....如果输入的金额不是负数,请在输入的数字的开头加上负号!(如果输入了金额,那么......)(如果为空,则不需要 - 符号)希望我再次清除场景
    • 是的,伙计,刚刚看到你的帖子.. 但我看到@t.j.crowder 已经回答了。
    【解决方案4】:

    如果你使用 jQuery,那么你可以使用这个插件。

    http://www.texotela.co.uk/code/jquery/numeric/

    【讨论】:

    • 如果输入的金额不是负数,把负号放在输入数字的开头!这个呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    相关资源
    最近更新 更多