2016-04-18 14 views
12

Próbuję utworzyć strukturę organizacyjną z lewym dzieckiem i prawym dzieckiem. podobnie jak to demo http://www.jqueryscript.net/demo/Create-An-Editable-Organization-Chart-with-jQuery-orgChart-Plugin/Po kliknięciu dodaj element potomny z polem wprowadzania, np. Drzewo

Ale chcę zapisać dane tutaj z pola wprowadzania. Chcę utworzyć lewe dziecko i prawe dziecko dla każdego po kliknięciu. teraz wszystkie wyświetlane jeden po drugim w dolnym i tylko usunąć przycisk. Chcę również dodać przycisk do tworzenia potomka dla każdego formularza wejściowego. Tutaj użyłem jak ten

$(function() { 
 
    var scntDiv = $('#p_scents'); 
 
    var i = $('#p_scents p').size() + 1; 
 

 
    $('#addScnt').live('click', function() { 
 
    $('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt_' + i + '" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv); 
 
    i++; 
 
    return false; 
 
    }); 
 

 
    $('#remScnt').live('click', function() { 
 
    if (i > 2) { 
 
     $(this).parents('p').remove(); 
 
     i--; 
 
    } 
 
    return false; 
 
    }); 
 
});
* { 
 
    font-family: Arial; 
 
} 
 
h2 { 
 
    padding: 0 0 5px 5px; 
 
} 
 
h2 a { 
 
    color: #224f99; 
 
} 
 
a { 
 
    color: #999; 
 
    text-decoration: none; 
 
} 
 
a:hover { 
 
    color: #802727; 
 
} 
 
p { 
 
    padding: 0 0 5px 0; 
 
} 
 
input { 
 
    padding: 5px; 
 
    border: 1px solid #999; 
 
    border-radius: 4px; 
 
    -moz-border-radius: 4px; 
 
    -web-kit-border-radius: 4px; 
 
    -khtml-border-radius: 4px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
 
<h2><a href="#" id="addScnt">Add Another Input Box</a></h2> 
 

 
<div id="p_scents"> 
 
    <p> 
 
    <label for="p_scnts"> 
 
     <input type="text" id="p_scnt" size="20" name="p_scnt" value="" placeholder="Input Value" /> 
 
    </label> 
 
    </p> 
 
</div>

Oto jsfiddle DEMO Chcę utworzyć strukturę drzewa sam jak wtyczki z formularza wejściowego. ale nie udało się tego. mój fragment nie działa, więc umieściłem link jsfiddle.

+0

jakie jest pytanie? –

+2

'.live' jest przestarzałe. Zamiast tego użyj metody '.on'. –

+0

@AnoopJoshi Chcę utworzyć strukturę drzewa taką samą jak ta wtyczka z formularzem wejściowym. ale nie udało się tego. mój fragment nie działa, więc umieściłem link jsfiddle. –

Odpowiedz

3

Występują różne błędy w kodzie, głównie id powinny być unikalne. I użyj zamiast , ponieważ jest amortyzowany w nowych wersjach. Można zrobić coś takiego z wykorzystaniem tabeli, jest to proste demo trzeba aktualizować

// bind click event handler 
 
$("#main").on('click', '.add', function() { 
 
    //getting parent td 
 
    var $td = $(this).parent(); 
 
    // creating child element 
 
    var $td1 = $('<td>', { 
 
    html: '<input />  <button class="add">+</button>  <button class="remove">-</button>' 
 
    }); 
 
    // getting child table if there is 
 
    var $tbl = $td.children('table') 
 
    // checking child exist or not , if yes then append child to it 
 
    if ($tbl.length) 
 
    $tbl.find('tr').eq(0).append($td1); 
 
    // else create new table and update 
 
    else 
 
    $td.append($('<table>', { 
 
     html: $('<tr>', { 
 
     html: $td1 
 
     }) 
 
    })) 
 
    // bind remove handler 
 
}).on('click', '.remove', function() { 
 
    // remove the parent td 
 
    $(this).parent().remove(); 
 
});
input { 
 
    width: 20px 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<table id="main" style="width:100%;text-align:center"> 
 
    <tr> 
 
    <td> 
 
     <input type="text" id="p_scnt" size="20" name="p_scnt" value="" placeholder="Input Value" /> 
 
     <button class="add"> 
 
     + 
 
     </button> 
 
     <button class="remove"> 
 
     - 
 
     </button> 
 
    </td> 
 
    </tr> 
 
</table>

1

Elementy są dynamicznie dodawane do strony, więc zdarzenia nie są powiązane z dodanymi elementami.

Sprawdź ten kod. To będzie działać.

$(function() { 
 
     var scntDiv = $('#p_scents'); 
 
     var i = $('#p_scents p').size() + 1; 
 
     $('#addScnt').on('click', function() { 
 
       $('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv); 
 
     i++; 
 
       return false; 
 
     }); 
 
    $(document).on("click", '#remScnt', function(e) { 
 
     if(i > 2) { 
 
         $(this).closest('p').remove(); 
 
         i--; 
 
       } 
 
       return false; 
 
    }); 
 
    }); 
 
* { font-family:Arial; } 
 
h2 { padding:0 0 5px 5px; } 
 
h2 a { color: #224f99; } 
 
a { color:#999; text-decoration: none; } 
 
a:hover { color:#802727; } 
 
p { padding:0 0 5px 0; } 
 

 
input { padding:5px; border:1px solid #999; border-radius:4px; -moz-border-radius:4px; -web-kit-border-radius:4px; -khtml-border-radius:4px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<h2><a href="#" id="addScnt">Add Another Input Box</a></h2> 
 

 
<div id="p_scents"> 
 
    <p> 
 
     <label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt" value="" placeholder="Input Value" /></label> 
 
    </p> 
 
</div>

+0

Dzięki za odpowiedź. Ale potrzebuję struktury potomnej, takiej jak drzewo. i tutaj tylko usuń opcję dla dołączonego pola wejściowego. Potrzebuję zarówno dodawania, jak i usuwania za pomocą struktury drzewa. –

3

ta może wykonać zadanie, ale muszę przyznać, że jest kilka błędów, ale myślę, że nadal godny patrzeć .. Zrobiłem to za pomocą Bootstrap sieci energetycznej.

HTML

<div class="container-fluid"> 
    <div class="row"> 
    <div class="parent-col col-md-12"> 
     <input type="text" /> 
     <BR /> 
     <a class='sibling'>Add Sibling</a> 
     or 
     <a class='child'>Add Child</a> 
    </div> 
    </div> 
</div> 

JS

$('.child').click(function(){ 
    var r = $(this).closest('div.row').clone(true, true); 
    r.find('.parent-col').not(':eq(0)').remove(); 
    var c = $(this).closest('.parent-col'); 
    var n = c.append(r); 
}); 

$('.sibling').click(function(){ 

    var thisC = $(this).closest('.parent-col'); 
    var n = thisC.clone(true, true); 
    thisC.after(n); 
    var c = $(this).closest('div.row'); 
    var len = $('div.parent-col', c).length; 
    var newClass = Math.ceil(12/len); 
    c.find('.parent-col').attr('class', 'parent-col col-md-'+newClass); 

}); 

jsFiddle

przetestować go w pełnym widoku szerokości łatwo zauważyć strukturę drzewa.

+0

Dzięki. Znacznie lepsza odpowiedź. Ok, spróbuję tego z moim css, a następnie przyjmuję twoją odpowiedź. Zajmie mi to trochę czasu. –

+1

oh dostaję bardziej idealną odpowiedź. +1 dla ciebie –

+0

Rozumiem. Nigdy nie myślałem, że tego chcesz. Dziękuję za +1 i uznanie, ale on rozumie więcej.Wciąż się cieszę, bo masz to, czego chcesz. :) – rmondesilva

Powiązane problemy