Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果为true,则显示字段;如果为false,则隐藏字段?_Javascript_Jquery - Fatal编程技术网

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

Javascript 如果为true,则显示字段;如果为false,则隐藏字段?,javascript,jquery,Javascript,Jquery,如果字段a中的金额高于字段B中的金额,则希望显示通知框 目前有一些代码在工作,但通知框的打开和关闭并不取决于实际金额 我错过了什么 jquery: $(document).ready(function() { $('#fieldA').change(function(){ if($(this).val()>$('#fieldb').val()){ //display it on the form

如果字段a中的金额高于字段B中的金额,则希望显示通知框

目前有一些代码在工作,但通知框的打开和关闭并不取决于实际金额

我错过了什么

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.');
                }
            })
      });

$(文档).ready(函数(){
$('#fieldA')。更改(函数(){
if($(this.val()>$('#fieldb').val()){
//在表单上显示它
$('.labelNotification').toggle();
$('.labelNotification').append('不建议FieldA数字高于FieldB');
}
})
});
HTML:


如果要比较数值(看起来像是这样),应该使用或将
val()
返回的(字符串)值转换为整数。根据,函数总是返回字符串值。

我发现了问题

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

    $('#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>30,它将不会显示

这是第二个问题

最后一个问题是始终清空标签

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

这是为
切换(布尔)
方法量身定制的。另外,在添加通知标签时必须小心。。。如果用户更改了两次答案怎么办?最好有多个通知对象,每个对象可以包含单一类型通知的内容

$(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.');
        }
    })
});

切换不是适合您的情况的最佳方法

你要比较然后决定

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

通知标签中的文本只需要设置一次,因为当B>A时,您没有任何注释显示它。我建议在HTML中设置此项

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

我怀疑您正在检查的大于的if块是否工作不正常,请打印值并查看。您可能还缺少一些代码,这些代码会在不满足条件时删除您要添加的文本(即FieldAb我应该使用什么来代替toggle?@alex只需使用.show()或.hide(),在if-block中使用.show()和else-block,如果它们不相等,则不会工作,例如.hide()如果它们是字符串,则比较运算符将为您转换它们。示例:@patrick dw我认为这是不对的。“10”>“2”的计算结果为false,至少在FF中是这样。比较两个字符串,没有隐式转换。@andrew the greater than不是问题,正如patrick所说,它将自动得到处理。var a=“30”;var b=“20”;警报(a>b);firefox对上述内容返回true。@这是因为字母表中“2”位于“3”之前。试试“3”>“20”。这是预期的行为,因为变量作为字符串进行比较。嗨,Bobby,我使用的是确切的顶级代码,但出于某种原因,无论值是低于还是高于fieldA,都会出现通知消息-知道为什么吗?再次感谢!嘿,亚历克斯,它起作用了。请记住#fieldb带有小写字母b,而#fieldA带有大写字母a。此外,我建议更改两个框的接线,如我发布的示例所示。在这篇评论中。
$(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()
      }    
    });
});