如果为true则显示字段,如果为false则隐藏字段?

时间:2010-11-12 21:06:44

标签: javascript jquery

如果fieldA中的金额高于fieldB中的金额,则希望显示通知框。

目前有一些代码可以正常工作,但通知框会根据实际数量来打开和关闭。

我错过了什么?

jquery的:


 $(document).ready(function() {
     $('#fieldA').change(function(){
                if($(this).val()>$('#fieldb').val()){
                  //display it on the form
                  $('.labelNotification').toggle();
                  $('.labelNotification').append('Not recommended to have FieldA figure higher than FieldB.');
                }
            })
      });

HTML:

< p style="display: none;" class="error labelNotification">

4 个答案:

答案 0 :(得分:4)

这是为toggle(boolean)方法量身定做的。此外,您必须小心附加到通知标签...如果用户更改他的答案两次怎么办?最好有多个通知对象,每个通知对象都可以包含单一类型通知的内容。

$(function() {
    $('#fieldA').change(function() {
        var isLarger = +$(this).val() > +$('#fieldB').val();  // Note: convert to number with '+'
        var $labelNotification = $('.labelNotification');
        $labelNotification.toggle(isLarger);
        if (isLarger) {
            //display it on the form
            $labelNotification.html('Not recommended to have FieldA figure higher than FieldB.');
        }
    })
});

答案 1 :(得分:3)

如果您要比较数值(看起来像是这样),则应使用parseIntparseFloatval()返回的(字符串)值转换为整数。根据{{​​3}},函数始终返回一个字符串值。

答案 2 :(得分:1)

我发现了问题,

首先,您需要正确使用分号,如下所示

    $('#fieldA').change(function () {
            if ($(this).val() > $('#fieldB').val()) {
                alert("its greater");
                //display it on the form
$('.labelNotification').append('Not recommended to have FieldA figure higher than FieldB.');
 $('.labelNotification').show();               
            }
else {$('.labelNotification').hide();
$('.labelNotification').html('');}
        });

第二件事,当你切换它时,它将不会第二次显示

如果40> 30

再次如果你输入50和50&gt; 30它不会显示

这是第二个问题

最终问题是标签一直是空的

$('.labelNotification').html('')'

答案 3 :(得分:0)

切换不适合您的情况。

你想比较然后决定。

由于您正在查看数字,我强烈建议您使用数字类型进行比较,使用parseInt()parseFloat()

通知标签中的文字只需要设置一次,因为当B&gt;时,您没有任何评论显示某些内容。答:我建议在HTML中设置它。

<span class="labelNotification" style="display:none">Your Warning Text</span>
<!-- if your CSS class has `display:none` remove the style attribute -->

至于jQuery。

$(function() {
    $("#fieldA").change(function() {
       var a = parseInt($(this).val());
       var b = parseInt($("#fieldb").val());
       // handle if a or b is not a number -->  isNaN(a) || isNaN(b)

      if( a > b ) {
        $('.labelNotification').show()
      } else {
        $('.labelNotification').hide()
      }    
    });
});