1

我是 javascript 新手。我对javascript一无所知,我仍在学习。我需要一点帮助。
我有一个带有数字的标签。用户必须在文本框中手动输入一个数字。如果用户输入的值超过标签中写入的值,则应在输入框上方显示一个弹出框。
我试图这样做,但无论如何都会显示弹出窗口。我希望仅在满足条件时才显示弹出框。
另外,谁能告诉我如何<br>在弹出内容中包含锚标签和标签?

$(document).ready(function(){
  var Err2 = $("#max").val();
  $('input').blur(function(){
    if( $(this).val() >= Err2 ) {
      $(this).popover({
        title: 'Warning!',
        content: 'sfgjksfhgjkhdghdfgjkdfjkgdfjkgn <a href=#">fgdfgdg</a>jhksdjhfdfsdgjlk',
        placement: 'bottom'
      }).popover('show');
    } else {
      $(this).popover('destroy');
    }
  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
content=<span id="max">5</span>
<input type="text" class="form-control">

http://www.bootply.com/suPp4ThGxq

4

4 回答 4

1

只需替换var Err2 = $("#max").val();var Err2 = $("#max").text();

对于 span 它返回 "" for val()

于 2016-03-22T07:54:21.833 回答
1

第一,span没有value财产。所以$("#max").val()会回来""

其次,当您从 DOM 元素中读取值时,它们会被读取为字符串。最好使用parseInt()parseFloat()检查。

更新代码

于 2016-03-22T07:49:54.680 回答
0

只需用下面的脚本替换您的脚本,它就会按您的预期工作。

<script>
$(document).ready(function(){
  var Err2 = $("#max").text();
  $('input').keyup(function(){
    if( $(this).val().length >= Err2 ) {
      $(this).popover({
        title: 'Warning!',
        content: 'sfgjksfhgjkhdghdfgjkdfjkgdfjkgn <a href=#">fgdfgdg</a>jhksdjhfdfsdgjlk',
        placement: 'bottom'
      }).popover('show');
    } else {
      $(this).popover('destroy');
    }
  })
});
</script>
于 2016-03-22T08:08:08.033 回答
0

使用text()而不是val()这样:

var Err2=$("#max").text();

此外,您必须测试您的字段中是否有数字或文本。

请参阅此帖子以测试字段是否包含数字:Javascript regexp number only check

于 2016-03-22T07:48:50.213 回答