2016-11-10 10 views
0

子要素から値を取得しようとすると、各子(項目)に同じnameの入力フィールドがあります。これを行うために、each()関数を使用しました。私はラジオ入力から値を取得するときに問題を起こし、私はラジオ入力から値を取得してはいけません。ここでコードfind()関数を使ってセレクタが得た無線入力値を取得する方法

<div class="accordion" id="menu-ui-sortable" role="tablist" aria-multiselectable="true"> 
    <div class="panel menu-item"> 
     <a class="panel-heading collapsed" role="tab" id="heading-menu-item-1" data-toggle="collapse" data-parent="#menu-ui-sortable" href="#menu-item-settings-1" aria-expanded="false" aria-controls="menu-item-settings-1"> 
      <h4 class="panel-title">Menu Item 1</h4> 
      <i class="indicator glyphicon glyphicon-chevron-down pull-right"></i> 
      <i class="item-type pull-right">Halaman Web</i> 
     </a> 

     <input type="hidden" name="menu_item_type" value="page"/> 
     <input type="hidden" name="menu_item_page_id" value="12"/> 
     <input type="hidden" name="menu_item_content_id" value=""/> 
     <input type="hidden" name="menu_item_url" value="www.example.com/page-12"/> 

     <div id="menu-item-settings-1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-menu-item-1"> 
      <div class="panel-body"> 
       <label>Label Navigasi</label> 
       <input type="text" class="form-control" name="menu_item_title" value="label 1"/> 

       <label>Atribut Judul</label> 
       <input type="text" class="form-control" name="menu_item_attr_title" value="attr 1"/> 

       <p class="menu_item_target"><label><input type="checkbox" name="menu_item_target" value="1" checked=""> Buka tautan di tab baru</label></p> 

       <label>CSS Classes/Icon</label> 
       <input type="text" class="form-control" name="menu_item_classes" value="fa fa-glass"/> 

       <label>Letak CSS Classes/Icon</label> 
       <div class="radio"> 
        <label><input type="radio" name="menu_item_classes_position" value="left" checked=""> Sebelah kiri label</label> 
        <label><input type="radio" name="menu_item_classes_position" value="right"> Sebelah kanan label</label> 
       </div> 

       <label class="move-button-handle"> 
        <span>Pindahkan: </span> 
        <a href="#" class="a-link menus-move menus-move-up" data-dir="up">Naik Satu</a> 
        <a href="#" class="a-link menus-move menus-move-down" data-dir="down">Turun Satu</a> 
        <a href="#" class="a-link menus-move menus-move-top" data-dir="top">Urutan Pertama</a> 
        <a href="#" class="a-link menus-move menus-move-bottom" data-dir="top">Urutan Terakhir</a> 
       </label> 

       <div class="menu-item-actions submitbox"> 
        <p class="link-to-original">Asli: <a class="a-link" href="http://wordpress.dev/new-page-page/">new page page</a></p> 
        <a class="item-delete danger-highlight" href="#">Hapus</a><span> | </span> 
        <a class="item-cancel" href="#">Cancel</a> 
       </div> 
      </div> 
     </div> 
    </div> 

    <div class="panel menu-item"> 
     <a class="panel-heading collapsed" role="tab" id="heading-menu-item-2" data-toggle="collapse" data-parent="#menu-ui-sortable" href="#menu-item-settings-2" aria-expanded="false" aria-controls="menu-item-settings-2"> 
      <h4 class="panel-title">Menu Item 2</h4> 
      <i class="indicator glyphicon glyphicon-chevron-down pull-right"></i> 
      <i class="item-type pull-right">Homepage Content</i> 
     </a> 

     <input type="hidden" name="menu_item_type" value="homepage-content"/> 
     <input type="hidden" name="menu_item_page_id" value=""/> 
     <input type="hidden" name="menu_item_content_id" value="4"/> 
     <input type="hidden" name="menu_item_url" value="#content-4"/> 

     <div id="menu-item-settings-2" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-menu-item-2"> 
      <div class="panel-body"> 
       <label>Label Navigasi</label> 
       <input type="text" class="form-control" name="menu_item_title" value="label 2"/> 

       <label>Atribut Judul</label> 
       <input type="text" class="form-control" name="menu_item_attr_title" value="attr 2"/> 

       <p class="menu_item_target"><label><input type="checkbox" name="menu_item_target" value="1"> Buka tautan di tab baru</label></p> 

       <label>CSS Classes/Icon</label> 
       <input type="text" class="form-control" name="menu_item_classes" value="fa fa-search"/> 

       <label>Letak CSS Classes/Icon</label> 
       <div class="radio"> 
        <label><input type="radio" name="menu_item_classes_position" value="left"> Sebelah kiri label</label> 
        <label><input type="radio" name="menu_item_classes_position" value="right" checked=""> Sebelah kanan label</label> 
       </div> 

       <label class="move-button-handle"> 
        <span>Pindahkan: </span> 
        <a href="#" class="a-link menus-move menus-move-up" data-dir="up">Naik Satu</a> 
        <a href="#" class="a-link menus-move menus-move-down" data-dir="down">Turun Satu</a> 
        <a href="#" class="a-link menus-move menus-move-top" data-dir="top">Urutan Pertama</a> 
        <a href="#" class="a-link menus-move menus-move-bottom" data-dir="top">Urutan Terakhir</a> 
       </label> 

       <div class="menu-item-actions submitbox"> 
        <a class="item-delete danger-highlight" id="delete-2" href="#">Hapus</a><span> | </span> 
        <a class="item-cancel" id="cancel-2" href="#">Cancel</a> 
       </div> 
      </div> 
     </div> 
    </div> 

    <div class="panel menu-item"> 
     <a class="panel-heading collapsed" role="tab" id="heading-menu-item-3" data-toggle="collapse" data-parent="#menu-ui-sortable" href="#menu-item-settings-3" aria-expanded="false" aria-controls="menu-item-settings-3"> 
      <h4 class="panel-title">Menu Item 3</h4> 
      <i class="indicator glyphicon glyphicon-chevron-down pull-right"></i> 
      <i class="item-type pull-right">Tautan Tertentu</i> 
     </a> 

     <input type="hidden" name="menu_item_type" value="custom-link"/> 
     <input type="hidden" name="menu_item_page_id" value=""/> 
     <input type="hidden" name="menu_item_content_id" value=""/> 

     <div id="menu-item-settings-3" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-menu-item-3"> 
      <div class="panel-body"> 
       <label>URL</label> 
       <input type="text" class="form-control" name="menu_item_url" value="www.example.com"/> 

       <label>Label Navigasi</label> 
       <input type="text" class="form-control" name="menu_item_title" value="label 3"/> 

       <label>Atribut Judul</label> 
       <input type="text" class="form-control" name="menu_item_attr_title" value="attr 3"/> 

       <p class="menu_item_target"><label><input type="checkbox" name="menu_item_target" value="1"> Buka tautan di tab baru</label></p> 

       <label>CSS Classes/Icon</label> 
       <input type="text" class="form-control" name="menu_item_classes" value="fa fa-files"/> 

       <label>Letak CSS Classes/Icon</label> 
       <div class="radio"> 
        <label><input type="radio" name="menu_item_classes_position" value="left" checked=""> Sebelah kiri label</label> 
        <label><input type="radio" name="menu_item_classes_position" value="right"> Sebelah kanan label</label> 
       </div> 

       <label class="move-button-handle"> 
        <span>Pindahkan: </span> 
        <a href="#" class="a-link menus-move menus-move-up" data-dir="up">Naik Satu</a> 
        <a href="#" class="a-link menus-move menus-move-down" data-dir="down">Turun Satu</a> 
        <a href="#" class="a-link menus-move menus-move-top" data-dir="top">Urutan Pertama</a> 
        <a href="#" class="a-link menus-move menus-move-bottom" data-dir="top">Urutan Terakhir</a> 
       </label> 

       <div class="menu-item-actions submitbox"> 
        <a class="item-delete danger-highlight" id="delete-3" href="#">Hapus</a><span> | </span> 
        <a class="item-cancel" id="cancel-3" href="#">Cancel</a> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

<br/> 

<button id="menu-nav-action" type="submit" class="btn btn-success btn-sm">Save</button> 

ここJS

$(document).ready(function() { 

    $("#menu-ui-sortable").collapse().sortable({ 
     placeholder: "ui-sortable-placeholder", 
     start: function(evt, ui){ 
      ui.placeholder.height(ui.helper.outerHeight()); 
     }, 
     helper: function(evt, ui){ 
      var $clone = $(ui).clone(); 
      $clone .css('position','absolute'); 
      return $clone.get(0); 
     } 
    }); 

    $(document).on('click', '#menu-nav-action', function (evt) { 
     var menuNav = []; 
     var ctn = 0; 

     $("#menu-ui-sortable > div.panel.menu-item").each(function() { 

      var menu_item_target = $(this).find('input[name="menu_item_target"]'); 
      var menu_item_target_ = menu_item_target.is(':checked') ? menu_item_target.val() : '0'; 

      var menu_item_classes_position = $(this).find('input[name="menu_item_classes_position"]'); 
      var menu_item_classes_position_ = ''; 

      for (var i = 0, length = menu_item_classes_position.length; i < length; i++) { 
       if (menu_item_classes_position[i].checked) { 
        menu_item_classes_position_ = menu_item_classes_position[i].value; 
        console.log(menu_item_classes_position_); 
        break; 
       } 
      } 

      /* Using each() function not work too */ 
      /*$(menu_item_classes_position).each(function() { 
       if ($(this).is(':checked')) { 
        menu_item_classes_position_ = $(this).val(); 
        console.log(menu_item_classes_position_); 
       } 
      });*/ 

      menuNav.push({ 
       nav_label: $(this).find('input[name="menu_item_title"]').val(), 
       nav_title_attr: $(this).find('input[name="menu_item_attr_title"]').val(), 
       nav_open_new_tab: menu_item_target_, 
       nav_css_classes: $(this).find('input[name="menu_item_classes"]').val(), 
       nav_css_classes_position: menu_item_classes_position_, 
       nav_type: $(this).find('input[name="menu_item_type"]').val(), 
       nav_link: $(this).find('input[name="menu_item_url"]').val(), 
       nav_order: ctn}); 
      ctn++; 
     }); 
     console.log(menuNav); 
     alert(JSON.stringify(menuNav)); 
    }); 

}); 

出力:HTML、各項目におけるnav_css_classes_positionの正しい値を "左" されるベース

[ 
    { 
     "nav_label":"label 1", 
     "nav_title_attr":"attr 1", 
     "nav_open_new_tab":"1", 
     "nav_css_classes":"fa fa-glass", 
     "nav_css_classes_position":"", // **this should be "left"** 
     "nav_type":"page", 
     "nav_link":"www.example.com/page-12", 
     "nav_order":0 
    }, 
    { 
     "nav_label":"label 2", 
     "nav_title_attr":"attr 2", 
     "nav_open_new_tab":"0", 
     "nav_css_classes":"fa fa-search", 
     "nav_css_classes_position":"", // **this should be "right"** 
     "nav_type":"homepage-content", 
     "nav_link":"#content-4", 
     "nav_order":1 
    }, 
    { 
     "nav_label":"label 3", 
     "nav_title_attr":"attr 3", 
     "nav_open_new_tab":"0", 
     "nav_css_classes":"fa fa-files", 
     "nav_css_classes_position":"left", 
     "nav_type":"custom-link", 
     "nav_link":"www.example.com", 
     "nav_order":2 
    } 
] 

、 "右" 、 そして、左"。ここで

デモ:jsfiddle

答えて

1

すべてのグループで同じラジオ名[name = "menu_item_classes_position"]を使用しています。グループごとに異なる名前を使用します。

この例では、ラジオボタンがアコーディオンで囲まれた3つのメニュー項目があります。しかし、これらのラジオボタンは1つのグループとして機能しています。つまり、2番目のメニュー項目のラジオボタンを選択すると、最初のメニュー項目のラジオボタンの選択が解除されます。

1

あなたの問題はあなたのラジオ要素のすべてが、ラジオのドキュメントごとに、同じグループ名=「menu_item_classes_position」に属しているため、この

<input type="radio" name="menu_item_classes_position" value="left" checked="checked"> Sebelah kiri label</label> 

にあります一度に1つのグループの入力のみを確認することができます。これが、メニュー3でラジオボタンがチェックされている理由です。これはあなたのフィドルでも確認できます。

正しい値を選択するには、メニューのラジオボタンの各セットに別の名前を付ける必要があります。

関連する問題