显示和隐藏的Javascript问题


Javascript issues with show and hide

我有一个HTML表单,我想根据在初始选项输入中选择的内容来显示输入。

选项是通过PHP打印的,因为它从PHP数组中获取一些信息。

<?php
        foreach ($type as $line_name => $line_id) {
                print "<option value='$line_id'>$line_name</option>";
        }
?> 

因此,为了便于论证,选项值将打印为"123"。

然后我就有了要隐藏的字段的HTML。php只是用数据库中的内容自动填充数据。

<tr><td>First Name:</td><td><input type="text" size="30" maxlength="30" name="contact_firstname" id="first_name" value="<?php print $customer->cust_firstname; ?>"><br/></td></tr>

我的Javascript如下:

$(document).ready(function () {
    $('#efm select[name="type"]').change(function () {
        if ($('#efm select[name="type"]').val() == '123') {
            $('#first_name').hide();
        } else if ($('#contact select[name="type"]').id() == 'EFM-2-PAIR'){
            $('#').show();
        } else if ($('#contact select[name="type"]').id() == 'EFM-4-PAIR'){
        } else {
            $('#').hide();
        }
    });
});

这目前不起作用,当从选择中选择"123"时,字段"first_name"仍然在屏幕上,我有一种感觉,这是因为它是从PHP中提取的,所以很难阅读,但我不是专家。

这里的任何帮助都将是惊人的

试试这个。。。

$('#efm select[name="type"]').change(function () {
    if ($(this).val() == '123') {
        $('#first_name').hide();
    }else
    if($('#contact select[name="type"]').attr('id') == 'EFM-2-PAIR'){
        // this won't work... $('#').show();
        // the hash tag is the begining of an id selector..
        // $('#some-id').show(); will work better!
    }else
    if ($('#contact select[name="type"]').attr('id') == 'EFM-4-PAIR'){
    } else {
        // won't work... $('#').hide();
    }
});

这一切都是假设在id为"contact"的包含元素中有一个名为"type"的select元素。。实际上,你不确定你试图用这些条件实现什么,也许你是想检查这些值?

 if($('#contact select[name="type"]').val() == 'EFM-4-PIAR') ...

否则,除非您在某个地方动态更改id,否则它们将始终为true。。

如果您只是从同一个select中检查其他选项值,则使用。。。

...
}else
if($(this).val() == 'EFM-2-PAIR'){
  //do something
}else
if($(this).val() == 'EFM-4-PAIR'){
  //do something else..
}else{
  //do something when none of the above conditions are met..
}

FYI$(this(将引用您在处理程序内为其提供侦听器的元素。。在这种情况下$('#efm select[name="type"]'(。。。将为您节省一些键入:(

尝试提醒select的值。

alert($('#efm-select[name="type"]'(.val(((;//你也可以在那里使用$(this(.val((,这将减少的代码大小

其他部分保持空白。

$('#efm select[name="type"]').change(function () {
  alert($(this).val());
  alert('is equal= '+$(this).val() == '123');
  if ($(this).val() == '123') {
    $('#first_name').hide();
  } else {
   alert('else part');
  }
});
jQuery(function ($) {
    $('#type').on('change', function(e) {
        alert($(this).val())
        if ($(this).val() == '190452') { // Bath Business Park Ethernet Rental
            $('#first_name').hide();
        } else if($(this).val() == '105561'){ //EFM-2-PAIR
            $('#surname').hide();
        } else if($(this).val() == '105581'){ //EFM-4-PAIR
            $('#company_name').hide();
        } else if($(this).val() == '105601'){ // EFM National Ethernet Rental
            $('#company_name').hide();
        }
    });
})

这是修复问题的代码,因为值类型实际上是一个包含2条信息的数组,读取它时出现问题