#javascript #php #html
#javascript #php #HTML
Вопрос:
В моем коде, когда любой текст вводится в текстовое поле и нажимается на add attribute
кнопку, введенное значение отображается на странице два раза, один в, first row of table
а другой first row of second table
в. Теперь вопрос в том, когда я ввел текст в другое текстовое поле, которое находится внутри second row of second table
, оно должно отображать введенный текст. но он не может отображаться. это не работает.
<script>
var i = 0;
document.getElementById('add-val').innerHTML='';
function insRow()
{
i ;
var x=document.getElementById('myTable').insertRow(-1)
var a=x.insertCell(-1)
var txt=document.getElementById('add-val').value;
a.innerHTML=txt;
// for <tr> of table
var row = document.getElementById("myRow");
var newrow=document.getElementById("myRow1");
var x = row.insertCell(-1);
var y = newrow.insertCell(-1);
x.innerHTML=txt; // '<br>'
y.innerHTML='<input type="text" name="nm" />';
}
document.getElementById('add-val').innerHTML='';
</script>
amp; это html-код.
<form method="post" name="form">
<input type="text" name="attr" id="add-val"> <input type="button" onClick="insRow()" value="Add Attribute">
<table width="27" height="17" id="myTable"> </table>
<table cellpadding="13px">
<tr id="myRow"> </tr>
<tr id="myRow1"> </tr>
</table>
<input type="submit" value="Add option" onClick="insRow()"/>
<?php
if(isset($_POST['submit']))
{
$val= $_POST['add'];
echo $val;
}
?>
</form>
Комментарии:
1. Возможно, я что-то упускаю, но, похоже, у вас нет элемента с именем ‘add’, поэтому $_POST[‘add’] всегда будет пустым.
2. Ооо, прошу прощения, я забыл изменить его значение. <?php if(isset($_POST[‘submit’])) { $val= $_POST[‘nm’]; echo $val; } ?>
3. Да, это даст вам одно значение… из первого сгенерированного поля….. Но что, если вы хотите нажать кнопку добавления атрибутов несколько раз и сгенерировать несколько полей … тогда мой ответ будет заключаться в том, как вы это сделаете.
4. @KyleK На самом деле вы задали правильный вопрос, и это то, что мне нужно. Когда я несколько раз нажимал кнопку добавления атрибутов, в одной строке отображалось количество текстовых полей. Когда я вводил другой текст в каждое текстовое поле, он должен отображаться в другой строке. это не работает.
5. Вы пробовали мой ответ? Вам нужно хранить значения в массиве, а затем, когда вы извлекаете с помощью $_POST, перебирайте их и отображайте
Ответ №1:
Это должно быть
y.innerHTML='<input type="text" name="nm[]" />';
[] после nm
name="nm[]"
Служит для хранения всех новых сгенерированных полей в массиве, к которому затем можно получить доступ с помощью $_POST
К которому вы затем просто получаете доступ вот так….
$val = $_POST['nm'];
foreach($val as $v){
echo $v; // display what user entered
}
// var_dump($val) will show you all the users seperate input for each field
Комментарии:
1. что насчет этого не работает?? Вы должны быть более понятными
2. Вы предотвращаете Default(); на вашей кнопке insROW()? Потому что вам нужно добавлять строки без обновления, а затем, когда вы нажимаете отправить, оно должно отображать все, что вы вводите
3. когда текст вводится в несколько текстовых полей второй строки второй таблицы и нажимается на кнопку Добавить параметр, он не отображает никакого значения.
4. Да, потому что оно будет отображаться только при отправке формы. Не после каждой строки добавляйте. Если вы хотите, чтобы он отображался при добавлении каждой строки, вам нужно использовать javascript и, возможно, AJAX
Ответ №2:
HTML-код :
<form method="post" name="form">
<input type="text" name="attr" id="add-val"> <input type="button" onClick="insRow()" value="Add Attribute">
<table width="27" height="17" id="myTable"> </table>
<table cellpadding="13px">
<tr id="myRow"> </tr>
<tr id="myRow1"> </tr>
</table>
<input type="submit" value="Add option" onClick="insRow()"/>
<?php
if(isset($_POST['submit']))
{
$val= $_POST['nm'];
echo $val;
}
?>
</form>
поместите имя ввода, значение которого вы хотите напечатать, вместо attr
$val= $_POST['attr'];
Комментарии:
1. нет @J Prakash, я говорю о втором текстовом поле. Второе текстовое поле появится, когда мы нажмем на кнопку Добавить атрибут. Когда мы вводим любой текст в это второе текстовое поле, он должен отображать текст, но он не работает.
2. Спасибо @J Prakash, но когда мы несколько раз нажали на кнопку добавления атрибута, отобразилось несколько текстовых полей. Если я ввел текст в каждое текстовое поле и нажал кнопку «добавить опцию», значение должно отображаться в другой переменной.