jQuery val()比较

时间:2015-10-10 16:06:25

标签: javascript jquery html

我试图用jQuery比较两个输入字段的值。但是,它似乎是正确的,但当其中一个值较大时,它不会alert

Enter the key:
<input type="text" name="key" size="35" id="q17" autocomplete="off">
<input id="charsLeft" type="text" class="count1" disabled>

<br /><br />

Plaintext:
<input type="text" name="key" size="35" id="q18" autocomplete="off">
<input id="charsLeft2" autocapitalize="off" autocorrect="off" type="text" class="count" disabled>

JavaScript的:

$(document).ready(function() {
  // Count key
  $("#q17").keyup(function() {
      $('#charsLeft').val($(this).val().length);
  });
  // Count plaintext
  $("#q18").keyup(function() {
      $('#charsLeft2').val($(this).val().length);
  });
  // Compare key|plaintext
  if ($('#charsLeft').val() < $('#charsLeft2').val()) {
    alert('Key is shorter than the plaintext');
  }
});

我正在尝试比较两个输入字段(charsLeftcharsLeft2)的值。我在这里错过了什么?这是一个小提琴:http://jsfiddle.net/2mgzn4pL/

3 个答案:

答案 0 :(得分:6)

你在比较字符串,而不是整数。您可以使用parseInt()转换它们。试试这个:

if (parseInt($('#charsLeft').val(), 10) < parseInt($('#charsLeft2').val(), 10)) {
    alert('Key is shorter than the plaintext');
}

Updated fiddle

答案 1 :(得分:5)

.val()返回一个字符串。您应该使用parseIntparseFloat

答案 2 :(得分:2)

您的代码存在两个问题:

  1. 您将字符串值与.val()进行比较而不是字符串长度
  2. 您的比较代码是在页面加载时执行的 - 这意味着只有在页面加载后您才会看到结果,但在此事件中结果为false且没有任何警报。
  3. 对于第一个问题,您应该以这种方式比较字符串长度$('#charsLeft').val().length < $('#charsLeft2').val().length

    对于第二个问题,您应该将比较代码放在按钮的单击事件处理函数或此类事物中。另一种选择是使用第二个输入的focusout事件,并使用.focusout()附加事件处理程序。