2013-03-28 5 views
4

У меня есть сценарий, который создает динамическую таблицу. После того, как пользователь нажмите на кнопку, рядом row в нижней части таблицы добавляются .:отключить страницу перезагрузки после отправки формы

function createRow() 
     { 
      var options='<select name="nameselect'> 
      options+='<option>one</option>'; 
      options+='</select>'; 
     options+='<input type=\'submit\' name=\'loadReq\' value=\'Pobierz dane\' />'; 
      var form = document.createElement('form'); // create row node 
      var row = document.createElement('tr'); // create row node 
      var col = document.createElement('td'); // create column node 
      var col2 = document.createElement('td'); // create second column node 
      var col3 = document.createElement('td'); // create column node 
      var col4 = document.createElement('td'); // create second column node 
      var col5 = document.createElement('td'); // create column node 
      var col6 = document.createElement('td'); 
      form.appendChild(col); 
      row.appendChild(form); // append first column to row 
      row.appendChild(col2); // append second column to row 
      row.appendChild(col3); // append first column to row 
      row.appendChild(col4); // append second column to row 
      row.appendChild(col5); // append first column to row 
      //row.appendChild(col6); 
      col.innerHTML = options; 

      col2.innerHTML = 'some text'; // put data in second column 
      col3.innerHTML = 'some text'; 
      col4.innerHTML = 'some text';   
      col5.innerHTML = 'some text'; 
      table.insertAdjacentElement('beforeEnd', row); 
      counter++; 
     } 

Так что сейчас им добавив строку с some text значения в 2-5 столбцах и drop down list с кнопкой в ​​качестве формы в первая колонка.



Но всякий раз, когда я представляю свою форму, страница перезагрузки, так Эфект моей JavaScript функции больше не существует, в результате я получаю exacly ту же страницу, как я открыл перед и ряд я добавил исчезнуть.

Можно ли отправить форму и не потерять efect от JavaScript Функция?

+0

В конце вашей функции добавить 'вернуть ложь,' –

+0

К сожалению нет никакого успеха ... – Mithrand1r

+1

Вы действительно хотите отправить форму (в данном случае на другую страницу) или просто нажмите на кнопке, которая выполняет Javascript? – Marshall

ответ

1

Я думаю, что вы потеряли все возможности PHP/Javascript.

Чтобы обновить то, что вы показываете пользователю, вам не нужно отправлять форму, даже если вы хотите использовать данные, введенные пользователем в форме. Это может быть сделано с помощью Javascript (без перезагрузки страницы):

var userInput = document.getElementById('userInput').value; 

Теперь, если вы хотите, чтобы отправить форму, чтобы получить и использовать пользовательский ввод в вашем PHP (для обновления базы данных, например ...) вы можете отправьте форму и когда вы повторно отобразите ее (после перезагрузки страницы), инициализируйте ее предыдущим вводом пользователя. Делая что-то подобное:

echo '<input type="text" name="userInput" value="'.$_POST['userInput'].'">'; 
+0

положительный. Вы совершенно правы. Но вы должны увидеть мою проблему как одну часть. Проблема заключается в том, что при отправке формы 'var col = document.createElement ('td'); 'эти элементы исчезают, и поэтому вставлена ​​строка, и я не знаю, как этого избежать. – Mithrand1r

+0

Я пытался сказать вам, что, поскольку у вас нет глобального представления о процессе отправки , создавая страницу и т. д., вы не выполняете поиск в правильном направлении. – Marshall

+0

Вы можете обрабатывать вход пользователя в PHP и строить свою таблицу в соответствии (с правильным количеством строк и нужными данными в ней) или не отправлять форму и обрабатывать все данные с помощью Javascript ... – Marshall

1

Вы можете изучить с помощью AJAX для отправки формы: http://www.malsup.com/jquery/form/

Таким образом, вы можете использовать эти данные в форме, чтобы выполнить какие-либо действия, а также обеспечить обратную связь с пользователем, без необходимости запуска полного обновления страницы ,

0

Либо отмените действие кнопки по умолчанию, либо поменяйте его с <input type="submit"> на <input type="button"> или <button> (оба варианта не имеют поведения по умолчанию).

+0

Мне нужно, чтобы он« отправлял », чтобы сделать' POST' поэтому я могу загрузить значение поля 'select' в свою переменную' php', но я не хочу потерять пользователя данных, помещенного в. – Mithrand1r

0

Если вы добавите return false; к функции, которая была вызвана при отправке формы, это предотвратит отправку формы.

function createRow(){ 
    /*Code*/ 
    return false; 
} 
+0

, но проблема в том, что форма размещена только в первом столбце. Возврат false в конце функции не имеет эффекта – Mithrand1r

0
table.insertAdjacentElement('beforeEnd', row); 
    counter++; 
    return false; 
} 

Дополнительный return false; делает это так форма не будет представлен, как это обычно было бы.

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