0

私はここに新しい投稿をしています。何年にもわたって何度か訪れて、すべてのアイデアを読んでいます。

私の問題は、2 つの選択ボックスを持つフォームがあり、2 つ目のボックスには最初の選択時に値が入力されていることです。2 つ目は、送信時に取得した URL 値を保持します。この関数は onchange を使用して完全に機能しますが、サブミット時には 2 番目の選択リスト URL の最初のもののみが機能します。それらを入れ替えることはできますが、最初の作品のみが機能し、他のすべてはプライマリ URL とそれに続くクロスハッチ '#' のみを渡します。

<script>
$(document).ready(function($){

$("#category").change(function() {
    $('select[name="product"]').removeAttr("name").hide();
    $("#" + $(this).val()).show().attr("name", "product");
});

/* ' This works on all
$(".product").change(function() {
    document.location = $(this).val();
});
*/

/* this only passes url on first product option list else passes opening url + #*/
$('#discover').submit(function() {    
        document.location = $(".product").val();
    return false;
});

});

</script>

<div id="discover-box">
<form id="discover" method="post">
<fieldset>
<p class="category">

<label class="title">Category:</label>
<select id="category" name="category">
        <option value="#" selected="selected">Choose category</option>
        <option value="accommodation">Accommodation</option>
        <option value="food">Food</option>
        <option value="explore">Explore</option>
</select>

<p><label>Sub-Category:</label>

<select id="accommodation" name="product" class="product">
<option value="#" selected="selected">Choose sub-category</option>
<option value="accommodation_category.asp?o=1&c=1">Motels</option>
<option value="accommodation_category.asp?o=2&c=2">Camping, Caravan & Holiday Parks</option>
<option value="accommodation_category.asp?o=3&c=3">B&B, Self-Contained Houses & Cottages</option>
<option value="accommodation_category.asp?o=4&c=4">Hotels</option>
<option value="accommodation_category.asp?o=5&c=5">Backpackers & Group Accommodation</option>
        <option value="accommodation_category.asp?o=6&c=6">National Parks</option>
</select>

<select id="food" style="display:none" name="product" class="product">
<option value="#" selected="selected">Choose sub-category</option>
<option value="food_wine_category.asp?o=1&t=1&c=1">Restaurants & Cafes</option>
<option value="food_wine_category.asp?o=2&t=1&c=2">Pubs</option>
<option value="food_wine_category.asp?o=3&t=1&c=3">Bakeries & Takeaway</option>
<option value="food_wine_category.asp?o=4&t=1&c=4">Local Produce</option>
<option value="food_wine_category.asp?o=5&t=2&c=1">Mount Gambier Wine Region</option>
<option value="food_wine_category.asp?o=5&t=2&c=2">Other Limestone Coast Wine Regions</option>
</select>

<select id="explore" style="display:none" name="product" class="product">
<option value="#" selected="selected">Choose sub-category</option>
<option value="explore_category.asp?o=1">Top 10</option>
<option value="explore_category.asp?o=2">Arts, Crafts, Galleries & Museums</option>
<option value="explore_category.asp?o=3">Heritage, Antiques & Collectables</option>
<option value="explore_category.asp?o=4">Family Fun</option>
<option value="explore_category.asp?o=5">Caves & Sinkholes</option>
<option value="explore_category.asp?o=6">Parks & Gardens</option>
<option value="explore_category.asp?o=7">Walks & Drives</option>
<option value="explore_category.asp?o=8">Kanawinka Geotrail</option>
<option value="explore_category.asp?o=9">Retail</option>
<option value="explore_category.asp?o=10">Recreation, Leisure & Adventure</option>  
</select>

</p>
<p class="buttons">
        <input type="image" src="images/submit-red.png" Value="submit">
</p>

</fieldset>
</form>
</div>
4

3 に答える 3

0

なぜなら $(".product").val(); クラスproductを持つDOMの最初の出現を見つけるので、いずれにしても最初のものをフェッチします... uを使用してこれを行うことができます

$('#discover').submit(function() {    
       document.location = $('select[name="product"]').val();
   return false;
});
于 2013-08-26T05:08:43.333 に答える
0

送信すると、属性名の選択ボックスが1つしかないため、その属性で選択した値を選択できます

$('#discover').submit(function() {    
        document.location = $('select[name="product"]').val();
    return false;
});
于 2013-08-26T05:08:43.293 に答える
0

Fiddler (fiddler2.com) を開いて、投稿が過ぎ去っていくのを見てください。一般に、ページ上の複数のコントロールが同じ名前を使用している場合、ブラウザーは実際にはそれらすべてを渡しますが、サーバー側のフレームワークは各ポスト パラメーターが一意であると想定し、最後のパラメーター以外はすべて無視します。

于 2013-08-26T05:05:39.210 に答える