2017-02-06 9 views
0

Просто хотел знать, есть ли у кого-нибудь из вас какой-либо код (JQuery, AJAX и т. Д.), Чтобы добавить новую строку в таблицу, в которой есть несколько выпадающих списков в некоторых столбцы ... Мне удалось добавить новую строку, добавив несколько javascript и jquery, но по какой-то причине (она работала раньше, но внезапно остановилась, и я не могу вспомнить последние изменения, которые я сделал честными), она больше не работает. Во-первых, я сделал PHP-функции для извлечения содержимого для выпадающих списков из БД. Затем я добавил HTML-код в функцию java-скрипта («Addnewrow()»), чтобы добавить новые строки и включить выпадающие списки в определенных столбцах. Thing, строки добавляются только тогда, когда я удаляю строки в функции «Addnewrow()», которая содержит функцию PHP («creaLista»). Я попытался изменить версии JQuery, удалив все файлы начальной загрузки и так, но ничего не работает. Я также пробовал разные комбинации в этих строках одиночных и двойных кавычек. Я также удалил несущественные код, например, в разделе «Визуализация» для selectpickerДобавление новой строки в таблицу, в которой есть несколько выпадающих списков в некоторых ячейках.

Вот Javascript раздел:

function addnewrow() 
{ 

    $('.selectpicker').selectpicker('render'); 

    var n = ($('.detail tr').length-0)+1; 
    var tr = "<tr>" + 
        '<td class="no">' + n + '</td>'+ 
        "<td><?php creaLista('mrditemid[]',3,'SPARES_ID','SPARES_BRIEFDESC',$query2, $m);?></td>"+ 
        "<td><?php creaLista('mrdunits[]',4,'UNIT_ID','UNIT_DESC',$query2, $m);?></td>"+ 
        '<td><input type="text" class="form-control mrdquantity" name="mrdquantity[]"></td>'+ 
        '<td><input type="text" class="form-control mrdremarks" name="mrdremarks[]"></td>'+ 

        '<td><button class="btnDelete btn btn-danger">-</td>'+ 
      '</tr>'; 

    $('.detail').append(tr); 
} 

Я могу добавить, что первая строка генерируется автоматически в HTML, а также позвонив такая же функция «crealista», и она отлично работает. Теперь, когда я нажимаю кнопку, которая запускает функцию «Addrow()», она просто ничего не делает, и когда я удаляю строки, содержащие функцию «Crealista», она работает, поэтому она имеет отношение к тому, как var tr, читается, я считаю, ...

Заранее благодарим за это!

+0

этот код внутри '' .js' или .php' файл? Потому что вы не можете выполнить php внутри javascript-кода на стороне клиента. Если это в php-файле и что php фактически заменяет вызовы 'creaLista' допустимым' js'/'html' (динамически созданным js по php), все в порядке. Если вы попытаетесь выполнить php внутри js-функции, это не сработает. Вы должны либо сгенерировать список перед отправкой страницы, либо получить его с помощью ajax-вызова файла php. – Kaddath

+0

Спасибо всем (Vijay, Ashish, Kaddath), очень полезная информация! Как обновление, так получилось, что код работал отлично. Проблема заключалась в том, что одно из полей имело специальные символы, и при анализе функции js эти символы останавливали интерпретатор. Просто удалив символы, все снова заработало. Спасибо всем, за ваше время и терпение и отличную информацию. – user1494526

ответ

0
> function CopyRow(e) { 
>    var r = confirm("Do you want to Copy this record?"); 
>    if (r == true) { 
> 
>     var $tr = $(e).closest('tr'); 
>     var $clone = $tr.clone(); 
>     var lastRow = $tr.clone(); 
> 
>     lastRow.find('select').each(function (idx, el) { 
>      var $el = $(el); 
>      $el.val($tr.find('select').eq(idx).val()) 
>     }); 
>     $tr.after(lastRow); 
>    
> 
>    } 
> 
>    else { 
>     return false; 
>    } 
>   } 

Он добавит новую строку и также скопирует предыдущую строку.

0

Вы не можете использовать PHP внутри JS, как то, как вы используете. Для достижения своей цели вам необходимо использовать терминологию AJAX.

Теперь как вы будете использовать? См. Приведенный ниже код.

У вас есть файл misc.js. (misc.js - просто случайное имя).

function addnewrow() 
{ 
    $('.selectpicker').selectpicker('render'); 
    var n = ($('.detail tr').length-0)+1; 

    // Make Ajax Call 
    $.get("ajax/get-next-row.php", { row: n }, function(tr) { 
     $('.detail').append(tr); 
    }); 
} 

прибудете-некст-row.php

/* ---------- Get row query parameter from AJAX GET ---------- */ 
$n = $_GET['row']; 


/* ============================================= 
    =   Section : Table row logic   = 
    ============================================= */ 

// Write here your row logic and pass it to tr. 
// E.g: 
define('SPARES_ID', 'xxx'); 
define('SPARES_BRIEFDESC', 'xxx'); 
define('UNIT_ID', 'xxx'); 
define('UNIT_DESC', 'xxx'); 
$query2 = ''; 
$m = ''; 
/* ===== End of Section ====== */ 


/* ---------- Generate Table Row and return it---------- */ 
echo $tr = '<tr> ' 
. '<td class="no">' . $n . '</td>' 
. '<td>' . creaLista('mrditemid[]', 3, SPARES_ID, SPARES_BRIEFDESC, $query2, $m) . '</td>' 
. '<td>' . creaLista('mrdunits[]', 4, UNIT_ID, UNIT_DESC, $query2, $m) . '</td>' 
. '<td><input type="text" class="form-control mrdquantity" name="mrdquantity[]"></td>' 
. '<td><input type="text" class="form-control mrdremarks" name="mrdremarks[]"></td>' 
. '<td><button class="btnDelete btn btn-danger">-</td>' 
. '</tr>'; 
exit(); 

 Смежные вопросы

  • Нет связанных вопросов^_^