PDA

View Full Version : سوال: نحوه کپی کردن محتوای دو تکست باکس در تکست باکس سوم بدون رفرش صفحه



fmka2f
جمعه 04 اسفند 1391, 14:28 عصر
سلام دوستان.من میخوام وقتی در یک تکست باکس کاربر نام رو وارد میکنه و در تکست باکس دوم نام خانوادگی رو
همزمان و بدون نیاز به کلیک یا پست بک بتونم در تکست باکس سوم نام رو به همراه نام خانوادگی و یک نقطه وسطشون نمایش بدم.
من با استفاده از اپدیت پنل و true کردن autopost بک تکست باکس دوم و نوشتن کد در رویداد textchange تکست باکس دوم اینکارو انجام دادم ولی احتیاج به کلیک در بیرون از تکست باکس دوم داره.بعد هم اینکه یک کد جی کوئری در همین سایت دیدم که همزمان اینکارو میکرد ولی واسه حرف آخر نام خانوادگی مشکل داشت و اونو باز باید کلیک میکردم تا نمایش بده.کسی راهی بلده....؟؟؟؟؟؟؟
از اجکس چیزی نمیدونم اگه میخواید بگید از اجکس استفاده کنم لطفا توضیح کامل بدید.مرسی

clover
جمعه 04 اسفند 1391, 15:07 عصر
سلام
این کار رو به راحتی با استفاده از جاوا اسکریپت می تونید انجام بدید، به مثال زیر دقت کنید:

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script>
function updateFullName() {
tbFirstName = document.getElementById("tbFirstName");
tbLastName = document.getElementById("tbLastName");
tbFullName = document.getElementById("tbFullName");

tbFullName.value = tbFirstName.value + ' ' + tbLastName.value;
}
</script>
</head>
<body>
<input id="tbFirstName" type="text" onkeyup="updateFullName()" /><br />
<input id="tbLastName" type="text" onkeyup="updateFullName()" /><br />

<input id="tbFullName" type="text" />
</body>
</html>

اگر قصد دارید با فشردن هر کلید آپدیت پنل رو مجبور به به روز رسانی کنید این کار به شکل زیر ممکن هست:

<%@ Page Language="C#‎" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="tbFirstName" runat="server" OnTextChanged="UpdateFullName" onkeyup="javascript:setTimeout(&#39;__doPostBack(\&#39;tbLastName\&#39; ,\&#39;\&#39;)&#39;, 0)" /><br />
<asp:TextBox ID="tbLastName" runat="server" OnTextChanged="UpdateFullName"onkeyup="javascript:setTimeout(&#39;__doPostBack(\&#39;tbLastName\&#39; ,\&#39;\&#39;)&#39;, 0)" /><br />

<asp:TextBox ID="tbFullName" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void UpdateFullName(object sender, EventArgs e)
{
tbFullName.Text = tbFirstName.Text + ' ' + tbLastName.Text;
}
}

با این حال مشکلاتی خواهید داشت مثل سرعت پایین آپدیت پنل و بهینه نبودن این کار، همینطور از دست دادن فوکوس و ....

در کل همه اینها مثال بود و اگر قصد دارید حتما این کار رو با ایجکس انجام بدید بهتره خودتون پیاده سازی کنید و استفاده از آپدیت پنل رو بی خیال بشید.

atarodi
جمعه 04 اسفند 1391, 15:26 عصر
خوب از آجاکس استفاده کنین.

fmka2f
جمعه 04 اسفند 1391, 15:45 عصر
خوب از آجاکس استفاده کنین.

برادر من خوب شد جمله زیر رو نوشتم تو پست اولم


از اجکس چیزی نمیدونم اگه میخواید بگید از اجکس استفاده کنم لطفا توضیح کامل بدید

علی متقی پور
سه شنبه 07 خرداد 1392, 23:32 عصر
بهترین راه استاده از جاوا اسکریپ هست و نیازی به کد نویسی سختی هم نداره و قطعا میتونید انجامش بدید. البته نظر منوب خوای این سناریو خیلی چیز جالبی نیست. اگر سفارش کسی نیست اینکارو انجام نده همونطورکه تو هیچ سایت معتبری نمیبینی همچین چیزی رو