PDA

View Full Version : سوال: اضافه کردن سطر به یک فرم و ارسال آن



iranme
یک شنبه 14 فروردین 1390, 21:31 عصر
سلام،
من نمی دونستم سوالم رو کجا بپرسم ولی چون با jquery کار کرده بودم اینجا گفتم.
یک فرم دارم که چندین سطر داره و چون تعداد سطر ها معلوم نیست و متغیر هستش یک button گذاشتم که تعداد سطر ها رو اضافه کنم و درون هر سطر هم یک textbox ایجاد میشه.
ولی حالا به مشکل برخوردم که چطوری فرمم رو به سرور ارسال کنم چون نمیتونم برای این textbox ها اسم انتخاب کنم!
اگر میشه راهنمایی کنید.
اینم کدهام:

<button id="addlink">Add Link</button><br />
<form id="news" name="news" method="post" action="news.php">
<ul style="padding-right:20px;">
<li class="blank">لینک</li>
<li class="sendnews"><input id="address" name="address" type="text" size="50" /></li>
<li class="blank">توضیحات</li>
<li class="sendnews" id="li1"><textarea id="summary" name="summary"></textarea></li>
<li class="blank">&nbsp;</li>
<li class="sendnews" style="text-align: center;"><input type="submit" value="ارسال" /></li>
</ul>
</form>این هم کد jquery:
<script>
$("#addlink").live("click", function(){
$("#li1").after("<li class='blank'>لینک</li><li class='sendnews'><input id='address' name='address' type='text' size='50' /></li>");
});
</script>

اگر نامفهوم هست بگید که بیشتر توضیح بدم.

iranme
دوشنبه 15 فروردین 1390, 12:21 عصر
کسی نیست من رو راهنمایی کنه؟

eleboys
دوشنبه 15 فروردین 1390, 12:59 عصر
یکی از راه حل هایی که شما داری اینه که واسه بکس هایی که می خوای اضافه کنی یه کانتر بزاری و بعد این کانتر رو بچسبونی به آخر یه اسم ثابت و بجای name تکست باکس هات بگذاری:


var tcount = 1;
$("#addlink").live("click", function(){
$("#li1").after("<li class='blank'>لینک</li><li class='sendnews'><input name='address"+tcount+"' type='text' size='50' /></li>");
tcount++;
});


باید توجه کنی مقدار کنترل ها بهمراه یا معادل خاصیت name اشون به سمت سرور فرستاده میشه بنابر این سمت سرور می تونی دنبال پارامتر های ارسالی که با رشته "address" شروع میشن به گردی و هر چندتا که پیدا کردی (به همراه مقدارشون) نشون میده که کاربر به همون تعداد تکست باکس اضافه کرده

iranme
دوشنبه 15 فروردین 1390, 13:57 عصر
خیلی ممنون ولی میشه توضیح بدید سمت سرور چجوری باید تعداد address ها رو تشخیص بدم!؟
با php کار میکنم.

eleboys
دوشنبه 15 فروردین 1390, 17:00 عصر
راستش من php کار نکردم اما راه مشترکی که الان به نظرم میرسه اینه که در آخر کار مقدار همون متغیر کانتر رو تو یه hidden فیلد با نام مشخص بریزید و بعد از ارسال فرم سمت سرور می تونید بفهمید چه تعداد تکست باکس با چه نام هایی وجود داشته. یعنی مثلا اگر سه بار تکست باکس اضافه بشه شما سه تا باکس با نامهای address1 , address2 , address3 دارید و بعد از ارسال فرم به سمت سرور و خوندن مقدار اون hidden فیلد و دریافت کردن عدد 3 می فهمید که کاربر سه تا باکس ایجاد کرده حالا با حلقه زدن می تونید مقدار هر سه رو بفهمید:


tcount = $_POST['hidden field name']; //
for(int i=1; i<=tcount; i++){
$_POST['address'+i]; // <= مقدار تک تک باکس ها را اینجا به ترتیب پیدا می کنیم
}