Передача данных из формы javascript
Уважаемые! Подскажите новичку как вытащить из этой формы данные ?..
А именно нужно что бы пользователь выбирал сколько ему нужно полей от 1 до 10 и все эти поля заносились в БД mysql поле в новой строке.. Сейчас в этом коде после нажатия субмит срабатывает алерт а как вывести это в php я не могу понять
$(document).ready(function(){
var i = $('input').size() + 1;
$('#add').click(function() {
$('<div><input type="text" class="field" name="dynamic[]" value="' + i + '" /></div>').fadeIn('slow').appendTo('.inputs');
i++;
});
$('#remove').click(function() {
if(i > 1) {
$('.field:last').remove();
i--;
}
});
$('#reset').click(function() {
while(i > 2) {
$('.field:last').remove();
i--;
}
});
// here's our click function for when the forms submitted
$('.submit').click(function(){
var answers = [];
$.each($('.field'), function() {
answers.push($(this).val());
});
if(answers.length == 0) {
answers = "none";
}
alert(answers);
return false;
});
});
<body> <div id="container"> <div class="dynamic-form"> <a href="#" id="add">Добавить</a> | <a href="#" id="remove">Удалить</a> | <a href="#" id="reset">Сбросить</a> <form> <div class="inputs"> <div><input type="text" name="dynamic[]" class="field" value="1"></div> </div> <input name="submit" type="button" class="submit" value="ОК"> </form> </div> </div> </body></html> |
вместо алерта отправьте данные пост запросом на пхп файл http://api.jquery.com/jQuery.post/
|
не совсем понимаю как грамотно написать это :(
|
както так $.post("test.php", { answers } ); а в test.php обрабатывать $_POST['answers']
|
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery-1.3.1.min.js"></script>
<script>
$(document).ready(function(){
var i = $('input').size() + 1;
$('#add').click(function() {
$('<div><input type="text" class="field" name="dynamic[]" /><input type="text" class="field" name="dynamic[]" /></div>').fadeIn('slow').appendTo('.inputs');
i++;
});
$('#remove').click(function() {
if(i > 1) {
$('.field:last').remove();
$('.field:last').remove();
i--;
}
});
$('#reset').click(function() {
while(i > 2) {
$('.field:last').remove();
i--;
}
});
// here's our click function for when the forms submitted
$('.submit').click(function(){
var answers = [];
$.each($('.field'), function() {
answers.push($(this).val());
});
// Отсылаем паметры
$.ajax({
type: "POST",
url: "new.php",
data: "data="+answers,
// Выводим то что вернул PHP
success: function(html) {
//предварительно очищаем нужный элемент страницы
$("#result").empty();
//и выводим ответ php скрипта
$("#result").append(html);
}
});
return false;
});
});
</script>
<style>
input{
border:1px solid #ccc;
padding:8px;
font-size:14px;
width:300px;
}
.submit{
width:110px;
background-color:#FF6;
padding:3px;
border:1px solid #FC0;
margin-top:20px;}
</style>
<body>
<div id="container">
<div class="dynamic-form">
<a href="#" id="add">Добавить</a> | <a href="#" id="remove">Удалить</a> | <a href="#" id="reset">Сбросить</a>
<form>
<div class="inputs">
<div><input type="text" name="dynamic[]" class="field" >
<input type="text" name="dynamic[]" class="field" ></div>
</div>
<input name="submit" type="button" class="submit" value="ОК">
</form>
<div id="result"></div>
</div>
</div>
</body></html>
Это полный код... принимаю так
<?
$data=$_POST[data];
$array = explode(',', $data);
foreach ($array as $number=>$value)
{
echo "в поле ".$number;
echo " значение ".$value;
echo "<br>";
}
?>
Вопрос Как ограничить чистой добавляемый полей ?? допустим что бы пользователь мог добавить только 10 полей и все |
У тебя в переменной i содержится количество полей. После добавления поля делай проверку, если лимит исчерпан - скрывай кнопку. По клику кнопки удаления проявляй кнопку добавления.
|
какой функцией или методом скрыть ссылку и потом вернуть? (кнопку добавить)
|
$('#add').hide() | $('#add').show()
|
теперь проблема в следующем... отдельно в файле этот код работает... когда я его вставляю в заполненую страницу которая содержит различные инпуты и кнопки СТОП на добавление полей работает только после нажатия на кнопку Сброс!
<script>
$(document).ready(function(){
var i = $('input').size() + 1;
$('#add').click(function() {
$('<div><input type="text" class="field" name="dynamic[]" /> <input type="text" class="field" name="dynamic[]" /></div>').fadeIn('slow').appendTo('.inputs');
i++;
if(i==5){
$('#add').hide()
}
});
$('#remove').click(function() {
if(i > 1) {
$('.field:last').remove();
$('.field:last').remove();
i--;
$('#add').show()
}
});
$('#reset').click(function() {
while(i > 2) {
$('.field:last').remove();
$('.field:last').remove();
i--;
$('#add').show()
}
});
// here's our click function for when the forms submitted
$('.submit').click(function(){
var answers = [];
$.each($('.field'), function() {
answers.push($(this).val());
});
// Отсылаем паметры
$.ajax({
type: "POST",
url: "new.php",
data: "data="+answers,
// Выводим то что вернул PHP
success: function(html) {
//предварительно очищаем нужный элемент страницы
$("#result").empty();
//и выводим ответ php скрипта
$("#result").append(html);
}
});
return false;
});
});
|
Хз, живой пример запили через [html run][/html]
И не нужно совать в цикл .hide() / .show() |
Цитата:
|
Понял в чем причина ! в остальных инпутах ! Как задать параметр что бы
var t = $('input').size(); считал инпуты только в определенном блоке div?? |
Цитата:
$('div.inputs input').size()
|
Спасибо большое !!
|
Еще вопрос не решенный.. как с одного инпута вытащить в одну переменную а со второго в другую? для записи в поля БД
|
nikolaymac,
serialize() |
допустим serialize() там требуется NAME а у меня этот параметр массив с неизвсным количесвом элементов и как быть
|
Ну и даешь им имя типа field[] со скобками на конце. Пхп такие параметры воспримет как массив field
|
var t = $('div.inputs input').size();
$('#add').click(function() {
$('<div><input type="text" class="field" name="dynamic[]" /> <input type="text" class="field" name="dynamic[]" /></div>').fadeIn('slow').appendTo('.inputs');
t++;
давай конкретнее ты про что field[]? var value= $('form').serialize(); так ? |
у меня есть массив dynamic[] как вытащить из него значения?
|
nikolaymac,
Поясняйте - где массив - на сервере или на клиенте ? |
я же выложил полный код
<script>
$(document).ready(function(){
var t = $('div.inputs input').size();
$('#add').click(function() {
$('<div><input type="text" class="field" name="dynamic[]" /> <input type="text" class="field" name="dynamic[]" /></div>').fadeIn('slow').appendTo('.inputs');
t++;
if(t==6){
$('#add').hide()
}
});
$('#remove').click(function() {
if(t > 1) {
$('.field:last').remove();
$('.field:last').remove();
t--;
$('#add').show()
}
});
$('#reset').click(function() {
while(t > 2) {
$('.field:last').remove();
$('.field:last').remove();
t--;
$('#add').show()
}
});
// here's our click function for when the forms submitted
$('.submit').click(function(){
var answers = [];
$.each($('.field'), function() {
answers.push($(this).val());
});
// Отсылаем паметры
$.ajax({
type: "POST",
url: "new.php",
data: "data="+answers,
// Выводим то что вернул PHP
success: function(html) {
//предварительно очищаем нужный элемент страницы
$("#result").empty();
//и выводим ответ php скрипта
$("#result").append(html);
}
});
return false;
});
});
</script>
<div id="container">
<div class="dynamic-form">
<a href="#" id="add">Добавить</a> | <a href="#" id="remove">Удалить</a> | <a href="#" id="reset">Сбросить</a>
<form>
<div class="inputs">
<div><input type="text" name="dynamic[]" class="field" >
<input type="text" name="dynamic[]" class="field" ></div>
</div>
<input name="submit" type="button" class="submit" value="ОК">
</form>
<div id="result"></div>
</div>
|
в итоге хочу получить две переменные типа input1 = "значение" input2 = "значение"
и снова input1 = "значение" input2 = "значение" это следующий динамический блок input |
Ну вместо этого:
40 $('.submit').click(function(){
41
42 var answers = [];
43 $.each($('.field'), function() {
44 answers.push($(this).val());
45
46 });
47
48
49
50 // Отсылаем паметры
51 $.ajax({
52 type: "POST",
53 url: "new.php",
54 data: "data="+answers,
55 // Выводим то что вернул PHP
56 success: function(html) {
57 //предварительно очищаем нужный элемент страницы
58 $("#result").empty();
59 //и выводим ответ php скрипта
60 $("#result").append(html);
61 }
62
63 });
Наверно так
var outData='';
$('.submit').click(function(){
outData = $(this).parents('form').serialize();
if(!outData) return;
// Oтcылaeм пaмeтpы
$.ajax({
type: "POST",
url: "new.php",
data: "data="+outData,
// Bывoдим тo чтo вepнyл PHP
success: function(html) {
//пpeдвapитeльнo oчищaeм нyжный элeмeнт cтpaни
$("#result").empty();
//и вывoдим oтвeт php cкpиптa
$("#result").append(html);
}
});return false;
});
|
Цитата:
|
спасайте !
|
Цитата:
<form> <div class="inputs"> <div><input type="text" name="dynamic1" class="field" > <input type="text" name="dynamic1" class="field" ><br> <input type="text" name="dynamic2" class="field" ><br> <input type="text" name="dynamic3" class="field" ><br> </div> <input type="button" class="submit" value="ОК"> </form> |
Дак вот именно что нельзя указывать dynamic1 2 3 так как формы создаются динамически ! тоесть может быть потом и dynamic 9 10 11
|
Цитата:
Проверьте воспроизводимость полученных данных из статического варианта... Не надо пробовать всё и всё сразу |
<body>
<form>
<div>
<form>
<input type="text" name="a" value="1" id="a" />
<input type="text" name="b" value="2" id="b" />
</form>
</div>
<input type="button" class="submit" value="ОК">
</form>
<div id="result"></div>
</body></html>
<script>
$(document).ready(function(){
$('.submit').click(function(){
var s = $('form').serialize();
// Отсылаем паметры
$.ajax({
type: "POST",
url: "new.php",
data: "data="+s,
// Выводим то что вернул PHP
success: function(html) {
//предварительно очищаем нужный элемент страницы
$("#result").empty();
//и выводим ответ php скрипта
$("#result").append(html);
}
});
return false;
});
});
</script>
принемаю так <? $data=$_POST[data]; var_dump($data); выдает только первый string(11) "a=sss....значение" |
Проблема не решилась... не могу даже в простой форме вывести результат форм
|
Цитата:
Ищите в гугле либо задайте вопрос в раздел http://javascript.ru/forum/server/ |
Если есть у кого нибудь подобный скрипт РАБОЧИЙ ! скиньте код! где просто работает serialize с нескольких форм.. все уже перешарил ! не могу найти
|
| Часовой пояс GMT +3, время: 20:44. |