textbox只有一个数字,另一个用jquery中的逗号

时间:2014-11-12 01:46:18

标签: javascript jquery

我在表单中有两个文本框。一个只验证数字,另一个验证数字和逗号。

仅限第一个案例编号。

function(textBoxObject) {
    var that = $(this),
    val = that.val();

    if (val === "" || isNaN(val)) {
      that.addClass("error");
    } else {
     that.removeClass("error");
    }
}

第二个案例编号和逗号。

如何处理另一个需要数字和逗号的文本框?是否可以在第一个函数中添加逻辑?

4 个答案:

答案 0 :(得分:1)

我认为你认为12,34是非法的,1,234是合法的。然后是demo

function checkNumberWithComma(textBox) {
    if ((textBox.value == 0 || textBox.value) && textBox.value.match(/^\d{0,3}(?:,\d{3})*$/)) {
        $(textBox).removeClass("error");
    }
    else {
        $(textBox).addClass("error");
    }
}

正则表达式:

^       means start
\d{0,3} means 0-3 digits
(?:     means non-capturing group 
,
\d{3}   means 3 digits
)
*       means repeat for 0 or more times
$       means end

答案 1 :(得分:0)

您可以使用 .indexOf()方法。

类似......

if(val.indexOf(',') === -1) {
    ...your code here...
}

答案 2 :(得分:0)

您可以尝试使用if(val.match(/^(\d,?)*$/g))

它将允许空字符串,数字和数字用逗号分隔。但它确实允许在字符串末尾使用逗号。

因此,1,2,3,412341234,都已通过,但,12,34foo将失败。

答案 3 :(得分:0)

看看这个codepen,我不知道你想要的行为,但你可以尝试类似的东西。

<强> JS

$(function(){
  function validateInput() {
      var that = $(this),
      val = that.val();
      if (that.attr('data-type') === 'number') {
        if (val === '' || isNaN(val)) that.addClass('error');
        else that.removeClass('error');
      }
      else {
        if (val.indexOf(',') === -1) that.addClass('error');
        else that.removeClass('error');
      }
  }

  $('input').change(validateInput);
});

<强> HTML

<div>
  <label> Number
    <input type="text" data-type="number"/>
  </label>
</div>

<div>
  <label> Comma
    <input type="text"/>
  </label>
</div>