PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: Динамическое добавление поля с php-обработкой
Поиск в теме | Версия для печати
Tyoma5891
Отправлено: 18 Марта, 2014 - 14:36:55
Частый посетитель
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
Добрый день, коллеги!
Возник такой вопрос, вот мне нужно чтобы копировалась строка полностью вся вместе с селектами как на картинке при нажатии кнопки добавить..
вот моя функция jquery:
CODE (
javascript ):
скопировать код в буфер обмена
var total = 0 ;
function add_new_image( ) {
total++;
$( '<tr>' ) .attr ( 'id' , 'tr_image_' + total)
//.css({lineHeight:'20px'})
.append (
$( '<td>' )
// .attr('id','td_title_'+total)
//.css({paddingRight:'5px',width:'200px'})
.append (
$( '<select>' )
.attr ( 'name' , 'tip' + total)
)
)
.append (
$( '<td>' )
.append (
$( '<input type="text" />' )
// .css({width:'200px'})
.attr ( 'id' , 'input_title_' + total)
.attr ( 'name' , 'input_title_' + total)
)
)
.append (
$( '<td>' )
//.css({width:'60px'})
.append (
$( '<span id="progress_' + total+ '" class="padding5px"><input type="button" value="удалить" onclick="$(\' #tr_image_' + total+ '\' ).remove();" class="ico_delete"></span>' )
)
)
.appendTo ( '#table_container' ) ;
}
$( document) .ready ( function ( ) {
add_new_image( ) ;
} ) ;
но проблема в том что эти селекты формируются в пхп:
CODE (
html ):
скопировать код в буфер обмена
<td >
<select name = "tolsh" >
<?php
$res = mysql_query ( "SELECT tolsh from ishodnue" ) ;
while ( $row= mysql_fetch_array( $res, MYSQL_ASSOC) )
{
echo "<option value=" .$row[ 'tolsh' ] ."> ".$row['tolsh']."</ option > ";
}
?>
</ select >
</ td >
так вот когда я вставляю в свою функцию jquery function add_new_image() этот код пхп то ничего не работает естественно, как мне это обойти может я не так что-то делаю..
CODE (
javascript ):
скопировать код в буфер обмена
.append (
$( '<select>' )
.attr ( 'name' , 'tip' + total)
$( '<?php
$res = mysql_query ("SELECT tolsh from ishodnue");
while ($row=mysql_fetch_array($res, MYSQL_ASSOC))
{
echo "<option value=".$row[' tolsh'].">".$row[' tolsh']."</option>";
}
?>' )
)
(Отредактировано автором: 19 Марта, 2014 - 11:25:02)
Tyoma5891
Отправлено: 18 Марта, 2014 - 16:46:37
Частый посетитель
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
alexiy пишет: Tyoma5891
может лучше AJAX?
через сервер каждый раз пропускать? не знаю даже, а что так думаете не получится просто?
Tyoma5891
Отправлено: 18 Марта, 2014 - 17:28:15
Частый посетитель
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
alexiy пишет: Tyoma5891 а так через сервер Вы не пропускаете?
ну так вроде ж нет, это ж ява работает только
alexiy
Отправлено: 18 Марта, 2014 - 17:33:01
Посетитель
Покинул форум
Сообщений всего: 483
Дата рег-ции: Янв. 2011
Помог: 6 раз(а)
Tyoma5891
CODE (
html ):
скопировать код в буфер обмена
<td >
<select name = "tolsh" >
<?php
$res = mysql_query ( "SELECT tolsh from ishodnue" ) ;
while ( $row= mysql_fetch_array( $res, MYSQL_ASSOC) )
{
echo "<option value=" .$row[ 'tolsh' ] ."> ".$row['tolsh']."</ option > ";
}
?>
</ select >
</ td >
а это что?
Tyoma5891
Отправлено: 18 Марта, 2014 - 17:42:09
Частый посетитель
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
alexiy пишет: Tyoma5891
CODE (
html ):
скопировать код в буфер обмена
<td >
<select name = "tolsh" >
<?php
$res = mysql_query ( "SELECT tolsh from ishodnue" ) ;
while ( $row= mysql_fetch_array( $res, MYSQL_ASSOC) )
{
echo "<option value=" .$row[ 'tolsh' ] ."> ".$row['tolsh']."</ option > ";
}
?>
</ select >
</ td >
а это что?
уговорили попробую аяксом как получится отпишусь...
Tyoma5891
Отправлено: 18 Марта, 2014 - 21:49:21
Частый посетитель
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
alexiy пишет: Tyoma5891 вперед!
Нет не получается, получается целый огород все равно, проблема вся в том у меня селекты в форме генерируются динамически вот код всей страницы:
CODE (
html ):
скопировать код в буфер обмена
<HTML >
<HEAD >
<meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
<meta http-equiv = "Pragma" content = "no-cache" >
<meta http-equiv = "expires" content = "0" >
<script src = "js/jquery.js" ></ script >
</ HEAD >
<BODY >
<H3 > Ввод расчетных данных для профнастила.</ H3 >
<form id = "myForm" action = "index.php?solve" method = "post" >
<table border = "1" width = "100%" >
<tr >
<td > Тип профнастила</ td >
<td > Толщина</ td >
<td > Колличество</ td >
<td > Ширина</ td >
<td > Высота</ td >
<td > Действие</ td >
</ tr >
<div id = "results" ></ div >
<tr >
<td >
<select name = "tip" >
<?php
$res = mysql_query ( "SELECT tip from ishodnue" ) ;
while ( $row= mysql_fetch_array( $res, MYSQL_ASSOC) )
{
echo "<option value=" .$row[ 'tip' ] ."> ".$row['tip']."</ option > ";
}
?>
</ select >
</ td >
<td >
<select name = "tolsh" >
<?php
$res = mysql_query ( "SELECT tolsh from ishodnue" ) ;
while ( $row= mysql_fetch_array( $res, MYSQL_ASSOC) )
{
echo "<option value=" .$row[ 'tolsh' ] ."> ".$row['tolsh']."</ option > ";
}
?>
</ select >
</ td >
<td ><input type = "text" name = "quant" value = "" / ></ td >
<td ><input type = "text" name = "width" value = "" / ></ td >
<td ><input type = "text" name = "height" value = "" / ></ td >
<td ><input type = "submit" name = "del" value = "удалить" / ></ td >
</ tr >
</ table >
<br >
<input type = "submit" value = "Посчитать" / >
</ form >
<div align = "right" >
<form action = "index.php?add" method = "post" >
<input type = "submit" name = "add" value = "Добавить" >
</ form >
</ div >
<form action = "index.php" method = "post" >
<input type = "submit" value = "Cancel" >
</ form >
</ BODY >
</ HTML >
как сделать чтоб эта строка в таблице динамически добавлялась при нажатии кнопки добавить:
CODE (
html ):
скопировать код в буфер обмена
<tr >
<td >
<select name = "tip" >
<?php
$res = mysql_query ( "SELECT tip from ishodnue" ) ;
while ( $row= mysql_fetch_array( $res, MYSQL_ASSOC) )
{
echo "<option value=" .$row[ 'tip' ] ."> ".$row['tip']."</ option > ";
}
?>
</ select >
</ td >
<td >
<select name = "tolsh" >
<?php
$res = mysql_query ( "SELECT tolsh from ishodnue" ) ;
while ( $row= mysql_fetch_array( $res, MYSQL_ASSOC) )
{
echo "<option value=" .$row[ 'tolsh' ] ."> ".$row['tolsh']."</ option > ";
}
?>
</ select >
</ td >
<td ><input type = "text" name = "quant" value = "" / ></ td >
<td ><input type = "text" name = "width" value = "" / ></ td >
<td ><input type = "text" name = "height" value = "" / ></ td >
<td ><input type = "submit" name = "del" value = "удалить" / ></ td >
</ tr >
кто-то же делал наверняка подобное?
SaM1001
Отправлено: 06 Августа, 2014 - 17:56:41
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Tyoma5891
Покажи как сделал, а то я столкнулся с аналогичной проблемой, у меня php-коде
генерирует
CODE (
html ):
скопировать код в буфер обмена
<div class = "fieldwrapper" id = "field1" >
тут дохера всякой всячины (инпуты, селекты) которое делает $formarticle->select_article(...);
</ div >
и теперь я хочу дублировать всё это, что стоит в диве и присвоить id="field2" и т.д.
Для этого у меня кусок JS:
CODE (
javascript ):
скопировать код в буфер обмена
'$(document).ready(function() {
$("#add").click(function() {
var intId = $("#buildyourform div").length + 1;
var fieldWrapper = $("<div class=\" fieldwrapper\" id=\" field" + intId + "\" />");
var fArtNr = $("...");
var fAmount = $(" / <input type=\" text\" size\" 10\" id=\" stock\" name=\" stock\" size=\" 10\" />");
var removeButton = $("<input type=\" button\" class=\" remove\" value=\" -\" />");
removeButton.click(function() {
$(this).parent().remove();
});
fieldWrapper.append(fArtNr);
fieldWrapper.append(fAmount);
fieldWrapper.append(removeButton);
$("#buildyourform").append(fieldWrapper);
});
$("#preview").click(function() {
$("#yourform").remove();
var fieldSet = $("<fieldset id=\" yourform\" ><legend>Your Form</legend></fieldset>");
$("#buildyourform div").each(function() {
var id = "input" + $(this).attr("id").replace("field","");
var label = $("<label for=\" " + id + "\" >" + $(this).find("input.fieldname").first().val() + "</label>");
var input;
fieldSet.append(label);
fieldSet.append(input);
});
$("body").append(fieldSet);
});
});
где var fArtNr = $("..."); должна мне это сделать. но никак не могу подцепить
Помогите разобраться пожалуйста
Tyoma5891
Отправлено: 06 Августа, 2014 - 19:30:03
Частый посетитель
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
я делал с помощью jquery
CODE (
javascript ):
скопировать код в буфер обмена
<script type = "text/javascript" >
var cnt = 2 ;
$( document) .ready ( function ( ) {
// Add new row
$( '.add-button' ) .click ( function ( event) {
event.preventDefault ( ) ;
var line = $( '#parameters_1' ) .html ( ) ;
var expr = /del_[0-9]+/ ;
var newline = line.replace ( expr, 'del_' + cnt) ;
$( '.parameters-table' ) .append ( '<tr class="parameters" id="parameters_' + cnt+ '">' + newline+ '</tr>' ) ;
cnt++;
} ) ;
</script>
html думаю не нужен разберешься...
SaM1001
Отправлено: 07 Августа, 2014 - 11:16:24
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Tyoma5891 пишет:
html думаю не нужен разберешься...
Нужен, ещё как нужен, хотя пробую конечно сам разобраться
ЗЫ: кое что получеться, нашёл "тебя" на другом форуме!!! Спасибо тебе огромное за отзывчивость!
(Отредактировано автором: 07 Августа, 2014 - 11:44:10)
SaM1001
Отправлено: 09 Августа, 2014 - 14:01:39
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Ребят, всем здрасти и хороших выходных. Мне они не сулят, парюсь третий день подряд и не могу сделать нужную фишку.
Короче у меня есть кусок jQuery который доблирует мои инпуты:
CODE (
javascript ):
скопировать код в буфер обмена
<script type = "text/javascript" >
var cnt = 2
$( document) .ready ( function ( ) {
// Add new row
$( \'.add\' ).click(function(event){
event.preventDefault();
var line = $(\' #field1\' ).html();
var expr = /del[0-9]+/;
var newline = line.replace(expr, \' del\' +cnt);
$(\' #buildyourform\' ).append(\' <div class="fieldwrapper" id="field\' +cnt+\' ">\' +newline+\' <div>\' );
cnt++;
});
});
// Delete row
function deleteRow(btn_id){
var del_id = btn_id.split(\' \' );
$(\' #filed\' +del_id[1]).remove();
};' ;
</script>
Вот этот код пыхи генерирует мне форму куда я вбиваю данные:
PHP:
скопировать код в буфер обмена
print '<tr><td>' . $langs -> trans ( 'Article' ) . ' / ' . $langs -> trans ( "Stock" ) . '</td><td colspan="3">' ;
print '<fieldset id="buildyourform">' ;
print '<div class="fieldwrapper" id="field1"/>' ;
print $formarticle -> select_article ( $object -> art_nr , 'ref' , array ( 'selectarnr_id' , 'state_id' ) , 6
) ; print '<input type="text" id="stok" name="stock" size="10" value="' . GETPOST( 'stock' ) . '">' ;
print '</div />' ;
print '</fieldset>' ;
print '<input type="button" value="Add Article" class="add" id="add" /> <input type="button" value="Delete" class="del" id="del" onclick="deleteRow(this.id); return false; /">' ;
print '</td></tr>' ;
На выходе исходный код страницы выглядит вот так:
CODE (
html ):
скопировать код в буфер обмена
<td colspan = "3" >
<fieldset id = "buildyourform" ><div class = "fieldwrapper" id = "field1" / >
<script type = "text/javascript" >
$(function() {
$("#ref").combobox({
minLengthToAutocomplete : 2,
selected : function(event,ui) {
var obj = [];
$.each(obj, function(key,values) {
if (values.method.length) {
getMethod(values);
}
});
}
});
function getMethod(obj) {
var id = $("#ref").val();
var method = obj.method;
var url = obj.url;
var htmlname = obj.htmlname;
$.getJSON(url,
{
action: method,
id: id,
htmlname: htmlname
},
function(response) {
$.each(obj.params, function(key,action) {
if (key.length) {
var num = response.num;
if (num > 0) {
$("#" + key).removeAttr(action);
} else {
$("#" + key).attr(action, action);
}
}
});
$("select#" + htmlname).html(response.value);
});
}
});</ script >
<select id = "ref" class = "flat" name = "ref" >
<option value = "-1" ></ option >
<option value = "2396" > 9984380 - Article Highrecomedly ART_001105 9984380</ option >
тут ещё дофига строчек материала...
<option value = "2402" > 9984895 - Funksystem data (Heinze) ART_001111 9984895</ option >
</ select >
<input type = "text" id = "stok" name = "stock" size = "10" value = "" >
</ div / >
</ fieldset >
<input type = "button" value = "Add Article" class = "add" id = "add" / >
<input type = "button" value = "Delete" class = "del" id = "del" onclick = "deleteRow(this.id); return false; /" >
</ td >
И всё вроде работает на ура. Берёт fieldset и копирует мне его один к одному. Всё как задуманно. Есдинственное не перенимается Autocomplete... чтобы в следующем инпуте выбор происходил после второго знака. Есть варианты передать "зацепить" эту функцию по другому как-то?
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB