0

我正在运行以下 jquery 脚本:

<html>
<head>

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("#textThing").blur(function(){
    var isNumber = $("#textThing").val().match(/^\d+/);

    $("#p2").html(isNumber);
  });
});

</script>

</head>

<body>
<input type="text" id="textThing" />
<p id="p2">Paragraph 2</p>
</body>
</html>

问题是当我取消选择输入时 p2 从来没有给我任何东西。我做错什么了?

4

4 回答 4

1

你需要说:

$("#p2").html(isNumber == null ? "" : isNumber[0]);

代替:

$("#p2").html(isNumber);

...因为.match()如果匹配则返回一个数组。见这里:https ://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/match

这是一个工作版本:http: //jsfiddle.net/k45Ka/5/

于 2012-06-21T03:59:38.810 回答
1

工作演示 http://jsfiddle.net/r4VPZ/3/ http://jsfiddle.net/r4VPZ/4/

你可以看到.match上面的解释。

您也可以使用.toStringwith.html.textapi。您可以进行null处理或查看isNaN http://www.w3schools.com/jsref/jsref_isnan.asp

希望对您有所帮助,如果我错过了什么,请告诉我,干杯:)

好读:http ://api.jquery.com/html/ & http://api.jquery.com/text/

Match:返回什么.match学习正则表达式和jquery - .match 返回什么?

代码

$(document).ready(function(){
  $("#textThing").on("blur",function(){
    var isNumber = $("#textThing").val().match(/^\d+/);

     $("#p2").html(isNumber.toString());
    // $("#p2").text(isNumber);
  });
});

//var folioIsNumResult = $("#Folio").val().match(/^\d+/i);​​
于 2012-06-21T04:02:56.783 回答
1

演示:http: //jsfiddle.net/epinapala/TbCfc/

当正则表达式不匹配时,match 返回 null!

$(document).ready(function(){
  $("#textThing").blur(function(){
    var isNumber = $(this).val().match(/^\d+/);
      if(isNumber == null){
          var res = "not a number"
              }else{
              var res = "valid number";
              }
    $("#p2").html(res);
  });
});

​</p>

于 2012-06-21T04:03:12.800 回答
0

如果测试通过或失败,您不会创建任何要输入的文本值

演示http://jsfiddle.net/9MJNj/

   $("#p2").html(isNumber ? 'Is number':'Is not');
于 2012-06-21T03:57:54.887 回答