0

以下代码适用于 Internet Explorer 和 Firefox,但不适用于 Chrome。有谁知道需要什么修改?

//* From the javascript file    
function hide_show(vals){
        if(vals=="food"){
            $("#fruit").hide().find("input, select, textarea").val("").find('input[type=radio], input[type=checkbox]').attr('checked', false);
            $("#starch").hide().find('input[type=radio], input[type=checkbox]').attr('checked', false).find("input, select, textarea").val("");
            $("#sweets").show().find('input[type=radio], input[type=checkbox]').attr('checked', false).find("input, select, textarea").val("");
        }
    }

来自 HTML 文件:下拉框

<fieldset id="food_type">
<legend>select type of food</legend>           
<label for="food_type">Food questions<span class="require">*</span></label>
<select tabindex="1" class="required" name="food_type" id="food_type"><option value="">Type</option>
<optgroup label="Favorite Food">
<option value="fruit" id="fruit" onclick="hide_show(this.value)">Fruit</option>
<option value="starch" id="homeowners" onclick="hide_show(this.value)">Starch</option>
<option value="sweets" id="sweets" onclick="hide_show(this.value)">Sweets</option>\
</optgroup>
</select>
</fieldset>

来自 HTML 文件:如果从下拉菜单中选择“水果”,则会出现一组示例问题

    <fieldset id="fruit">
    <legend>About your favorite fruit</legend>

    <label for="color">Color<span class="require">*</span></label>
    <select tabindex="2" class="required" name="color" id="color">
        <option value="">Select</option><option value="orange">Orange</option><option value="yellow">Yellow</option>
    </select>
    <label for="taste">Taste<span class="require">*</span></label>
    <input tabindex="16" style="width:100px; float:left;" type="text" class="required" maxlength="3" size="3" name="age" id="age"/>
    <label for="availability">Availability<span class="require">*</span></label>
    <select tabindex="17" class="required" name="availability" id=" availability ">
        <option value="">Select</option><option value="restaurant">Restaurants</option><option value="farmermkt">Farmers Market</option><option value="Grocer">Grocer</option>
    </select>
    </fieldset>
4

2 回答 2

1

您需要为每个选项使用 onchange() 事件来选择而不是 onclick,例如

<select tabindex="1" class="required" name="food_type" id="food_type" onchange="hide_show(this.value);">
    ..remove onclick from options
</select>
于 2013-07-12T04:22:41.687 回答
1

我重新编写了您的代码:更改了选项列表上的 onclick 事件,处于选择级别,并带有更改事件

html:

<fieldset id="food_type">
<legend>select type of food</legend>           
<label for="food_type">Food questions<span class="require">*</span></label>
<select tabindex="1" class="required" name="food_type" id="food_type" onchange="hide_show();"><option value="">Type</option>
<optgroup label="Favorite Food">
<option value="fruit" id="fruit" >Fruit</option>
<option value="starch" id="homeowners" >Starch</option>
<option value="sweets" id="sweets">Sweets</option>\
</optgroup>
</select>
</fieldset>

<fieldset id="fruit">
<legend>About your favorite fruit</legend>

<label for="color">Color<span class="require">*</span></label>
<select tabindex="2" class="required" name="color" id="color">
<option value="">Select</option><option value="orange">Orange</option><option value="yellow">Yellow</option>
</select>
<label for="taste">Taste<span class="require">*</span></label>
<input tabindex="16" style="width:100px; float:left;" type="text" class="required" maxlength="3" size="3" name="age" id="age"/>
<label for="availability">Availability<span class="require">*</span></label>
<select tabindex="17" class="required" name="availability" id=" availability ">
    <option value="">Select</option><option value="restaurant">Restaurants</option><option value="farmermkt">Farmers Market</option><option value="Grocer">Grocer</option>
</select>
</fieldset>

然后是 Javascript

    <script type="text/javascript">
function hide_show(){
var option = document.getElementById("food_type").value;
switch (option)
{
case 'fruit':
    $("#fruit").hide().find("input, select, textarea").val("").find('input[type=radio], input[type=checkbox]').attr('checked', false);
    break;
case 'starch':              
$("#starch").hide().find('input[type=radio], input[type=checkbox]').attr('checked', false).find("input, select, textarea").val("");
    break;
case 'sweets':  
$("#sweets").show().find('input[type=radio], input[type=checkbox]').attr('checked', false).find("input, select, textarea").val("");
    //}
}
    }
    </script>

这是JSFiddle

于 2013-07-12T04:40:21.447 回答