开发者

on select display textbox with jquery?

开发者 https://www.devze.com 2022-12-21 10:11 出处:网络
I\'m sure this is super easy, but I can\'t seem to think what I\'m doing wrong, anyway I have a \"title\" select list for my form, and I want to display a textbox if \"Other\" is selected.

I'm sure this is super easy, but I can't seem to think what I'm doing wrong, anyway I have a "title" select list for my form, and I want to display a textbox if "Other" is selected.

<select name="title" id="title" class="required">
    <option value="" selected="selected">- Select Title -</option>
    <option value="Ms.">Ms.</option>
    <option value="Mrs.">Mrs.</option>
    <option value="Mr.">Mr.</option>
    <option value="Dr.">Dr.</option>
    <option value="Prof.">Prof.</option>
    <option value="Rev.">Rev.</option>
    <option value="Other" onclick="showOther();">Other</option>
</select>

fun开发者_运维百科ction showOther() {
  jQuery("#otherTitle").show();
}

But that's not working.. the #otherTitle textbox is hidden using jquery when the page loads.


I would suggest a different approach:

$("#title").change(function() {
    if($(this).find("option:last").is(':selected')) {
        $("#otherTitle").show();
    } else {
        $("#otherTitle").hide();
    }
});

That is, if the last option is selected, show the textbox that goes by the ID otherTitle. I actually use this method. Hope that helps. Of course, your 'Other' field must always be last for this to work - plus it's rather handy for multilingual sites.


  1. Use jQuery to bind your event handlers instead of the "onfoo" element attributes
  2. You're better off binding the handler to the "select" element, because there are ways in which the option can be selected that won't involve a "click" event:

(some text to make stackoverflow show the code block below)

$(function() {
  $('#title').change(function() {
    if ($(this).val() == 'Other')
      $('#otherTitle').show();
    else
      $('#otherTitle').hide();
  });
});

I'd prefer to give the "Other" option an "id" value rather than relying on the "value", but whatever.


Bind an event to your select list, when its changed, look at the value and do your hiding / showing

$(function(){

    $("#title").change(function () {
        if ($(this).val() == 'Other') {
            $("#otherTitle").show();
        }
    });

});


$(function() {    
    $('#title').change(function() {
      if (this.value === "Other") {
        $("#otherTitle").show();
      }
      else {
        $("#otherTitle").hide();
      }     
    });    
});

and a Working Demo. add /edit to the url to see the code

0

精彩评论

暂无评论...
验证码 换一张
取 消