2

Webmatrixでasp.netを使用して、状態を選択するドロップメニューを作成しました。次に、その選択に基づいて、ユーザーがその状態内の領域を選択するための別のドロップメニューがあります。

私が抱えている問題は、データが投稿されるときに、選択されていない他の領域に一連のコンマが追加されることです。これがどのように発生しているかを確認できます。regionの各selectタグにはname="Region"がありますが、これを修正する方法がわかりません。すべてネストされているdivタグの'name'属性を使用できません。 。リージョンフィールドのどこかに名前がないと、データベースに何も投稿されません。

これがhtmlコードです:

<label>State:</label>
   <select class="stareg" id="SelectState" name="State" size="1">
        <option value="">Please Select</option>
        <option value="ACT">A.C.T.</option>
        <option value="NSW">New South Wales</option>
        <option value="NT">Northern Territory</option>
        <option value="QLD">Queensland</option>
        <option value="SA">South Australia</option>
        <option value="TAS">Tasmania</option>
        <option value="VIC">Victoria</option>
        <option value="WA">Western Australia</option>
    </select>

   <label>Region:</label>

         <div id="SelectRegion">
    <div>
         <div>
            <select class="stareg" name="Region">
                <option value="">Please Select</option>
               </select>
        </div>
    </div>

    <div id="VIC" style="display: none;">
         <div id="VICReg">
            <select class="stareg" id="VICRegs" name="Region">
                <option value="">Please Select</option>
                <option value="Melbourne & Inner Suburbs">Melbourne & Inner Suburbs</option>
                <option value="East & South East">East & South East Suburbs</option>
                <option value="Geelong">Geelong</option>
                <option value="Gippsland">Gippsland</option>
                <option value="Mornington Peninsula">Mornington Peninsula</option>
                <option value="North & West Suburbs">North & West Suburbs</option>
                <option value="Yarra Valley & Dandenong Ranges">Yarra Valley & Dandenong Ranges</option>
                <option value="Regional Victoria">Regional Victoria</option>
            </select>
        </div>
    </div>

    <div id="NSW" style="display: none;">
          <div id="NSWReg">
            <select class="stareg" id="NSWRegs" name="Region">
                <option value="">Please Select</option>
                <option value="Sydney & Inner Suburbs">Sydney & Inner Suburbs</option>
                <option value="Central West">Central West</option>
                <option value="Hunter">Hunter</option>
                <option value="North Coast">North Coast</option>
                <option value="South Coast">South Coast</option>
                <option value="Southern Inland">Southern Inland</option>
                <option value="Western Sydney">Western Sydney</option>
                <option value="Regional N.S.W.">Regional N.S.W.</option>

            </select>
        </div>
    </div>

    <div id="QLD" style="display: none;">
          <div id="QLDReg">
            <select class="stareg" id="QLDRegs" name="Region">
                <option value="">Please Select</option>
                <option value="Brisbane & Inner Suburbs">Brisbane & Inner Suburbs</option>
                <option value="Bundaberg">Bundaberg</option>
                <option value="Cairns">Cairns</option>
                <option value="Gold Coast">Gold Coast</option>
                <option value="Mackay">Mackay</option>
                <option value="Sunshine Coast">Sunshine Coast</option>
                <option value="Townsville">Townsville</option>
                <option value="Regional QLD">Regional QLD</option> 
            </select>
        </div>
    </div>

    <div id="SA" style="display: none;">
          <div id="SAReg">
            <select class="stareg" id="SARegs" name="Region">
                <option value="">Please Select</option>
                <option value="Adelaide & Inner Suburbs">Adelaide & Inner Suburbs</option>
                <option value="Adelaide Hills">Adelaide Hills</option>
                <option value="Barossa">Barossa</option>
                <option value="Clare Valley">Clare Valley</option>
                <option value="Eyre Peninsula">Eyre Peninsula</option>
                <option value="Fleurieu Peninsula">Fleurieu Peninsula</option>
                <option value="Kangaroo Island">Kangaroo Island</option>
                <option value="Limestone Coast">Limestone Coast</option>
                <option value="Murraylands">Murraylands</option>
                <option value="Yorke Peninsula">Yorke Peninsula</option>
                <option value="Regional S.A.">Regional S.A.</option> 
            </select>
        </div>
    </div>

    <div id="WA" style="display: none;">
          <div id="WAReg">
            <select class="stareg" id="WARegs" name="Region">
                <option value="">Please Select</option>
                <option value="Perth & Inner Suburbs">Perth & Inner Suburbs</option>
                <option value="Great Southern">Great Southern</option>
                <option value="Peel">Peel</option>
                <option value="South West">South West</option>
                <option value="Regional W.A.">Regional W.A.</option> 
            </select>
        </div>
    </div>

    <div id="ACT" style="display: none;">
          <div id="ACTReg">
            <select class="stareg" id="ACTRegs" name="Region">
                <option value="">Please Select</option>
                <option value="Canberra & Inner Suburbs">Canberra & Inner Suburbs</option>
                <option value="Other Area A.C.T">Other Area A.C.T</option>
            </select>
        </div>
    </div>

    <div id="TAS" style="display: none;">
          <div id="TASReg">
            <select class="stareg" id="TASRegs" name="Region">
                <option value="">Please Select</option>
                <option value="Hobart & Inner Suburbs">Hobart & Inner Suburbs</option>
                <option value="Davenport">Davenport</option>
                <option value="Launceston">Launceston</option>
                <option value="Regional Tasmania">Regional Tasmania</option>
            </select>
        </div>
    </div>

    <div id="NT" style="display: none;">
          <div id="NTReg">
            <select class="stareg" id="NTRegs" name="Region">
                <option value="">Please Select</option>
                <option value="Darwin & Inner Suburbs">Darwin & Inner Suburbs</option>
                <option value="Regional N.T.">Regional N.T.</option>
            </select>
        </div>
    </div>

</div>

そして、これがjqueryスクリプトです。

$(function () {
    $('#SelectState').change(function () {
        $('#SelectRegion > div').hide();
        $('#SelectRegion').find('#' + $(this).val()).show();
    });
});

データベースに送信される追加のコンマを除いて、すべてが希望どおりに機能します。すべてのリージョン選択タグを1つの名前でラップする方法はありますか、それともより高度なスクリプトが必要ですか?どんな助けでも大歓迎です。

4

1 に答える 1

3

問題は、nameすべてのselectコントロールに同じパラメーターを使用するためです。:name="Region"、したがって、それらすべてが一緒に投稿されます。なんで ?パラメータ名がポストバックされ、すべてに同じものを使用するため、コンマと混同されます。空のコンマは非表示になっているコンマであり、よく理解していれば、もう選択されていません。

あなたが何をしているのかを知った瞬間から、私はあなたに可能な解決策を提案することができ、あなたはそれをあなたのやり方で行います。

.show()javascriptでを作成した瞬間に、すべての選択を。で変更しname=""、表示されているものだけを:で残しますname="Region"

javascriptのコードは次のようになります。

$(function () {
  $('#SelectState').change(function () 
  {
    $('#SelectRegion > div').hide();

    // show the selected
    $('#SelectRegion').find('#' + $(this).val()).show();

    // remove the name from all that have the class stareg
    $('.stareg').attr('name', '')

    // set only to visible the class name
    $('#SelectRegion').find('#' + $(this).val() + 'Regs').attr('name', 'Region')

  });
});

私はページを持っていないので、数週間かかるかもしれません。最後の行がリージョンを設定するための選択コントロールを正しく見つけるかどうかはわかりません。また、staregクラスを使用してすべての選択から名前を削除しますが、そのページの他のコントロールに同じクラスを使用しないでください。

于 2012-12-09T11:49:45.390 に答える