显示和隐藏的Javascript问题

时间:2014-07-17 21:09:44

标签: javascript php jquery html css

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

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

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

因此,为了论证,选项值将打印为&#34; 123&#34;。

然后我有我要隐藏的字段的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();
        }
    });
});

目前还没有工作,领域&#34; first_name&#34;选择&#34; 123&#34;时仍然在屏幕上从选择中,我有一种感觉,因为它是从PHP中吸收的,所以它很难阅读,但我不是专家。

这里的任何帮助都会很棒

3 个答案:

答案 0 :(得分:0)

试试这个......

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

这是假设在包含元素中有一个名为'type'的select元素,其id为'contact'..实际上不确定你要用这些条件完成什么,也许你想检查一下值?

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

否则,除非你动态地改变id的某个地方,否则它们将永远是真的..

如果您只是检查来自同一选择的其他选项值,请使用...

...
}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”]')...将为您节省一些打字:)

答案 1 :(得分:0)

尝试提醒选择的值。

alert($(&#39; #efm select [name =&#34; type&#34;]&#39;)。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');
  }
});

答案 2 :(得分:0)

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条信息的数组,但是它在阅读时遇到了问题。