PDA

View Full Version : enable کردن دکمه در ASP.NET با C#‎



benyamin mirzai
سه شنبه 07 اردیبهشت 1389, 08:51 صبح
سلام من یک صفحه دارم دارای چندین textbox و یک دکمه send هم دارم به طور default دکمه من disable است می خواهم به محض پر شدن textbox هایم دکمه enable شود به چه صورت انجام دهم ؟

maxpayn2
سه شنبه 07 اردیبهشت 1389, 09:05 صبح
میشه از ontextchanged استفاده کرد ولی نیاز به Postback داره ، حتما راه بهتری هم هست

benyamin mirzai
سه شنبه 07 اردیبهشت 1389, 09:12 صبح
اخه یه textbox نیست که از ontextchanged استفاده کنم باید همشون پر شند بعد enable شود

maxpayn2
سه شنبه 07 اردیبهشت 1389, 09:14 صبح
خب همشون همین event رو دارن ، ولی همونطور که گفتم راه حل خوبی نیست ، چون نیاز به PostBack داره

Vahid_moghaddam
سه شنبه 07 اردیبهشت 1389, 09:27 صبح
باید از javascript استفاده کنید. متن هر textbox وقتی تغییر می کنه چک کنید ببینید textbox ها دارای متن هستند یا نه. اگه بودند دکمه رو enable کنید

Nightbat
سه شنبه 07 اردیبهشت 1389, 09:30 صبح
function Check() {
var txt1 = document.getElementById('<%=TextBox1.ClientID %>');
var txt2 = document.getElementById('<%=TextBox2.ClientID %>');
if (txt1.value != '' && txt2.value != '') {
document.getElementById('Button1').disabled = false;
}
}



فانکشن بالا رو توی تگ script بذار. و برای هر تکست باکس هم مثل زیر عمل کن:

<asp:TextBox ID="TextBox1" runat="server" onchange="Check()"></asp:TextBox>

benyamin mirzai
سه شنبه 07 اردیبهشت 1389, 10:10 صبح
دوست عزیز دستور onchange="Check() را نمیشناسه و اگه از
OnTextChanged="Check()" استفاده کنم error مده

Vahid_moghaddam
سه شنبه 07 اردیبهشت 1389, 10:25 صبح
اینطوری نوشتید؟




<script>
function Check()
{
.
.
.
}
</script>

benyamin mirzai
سه شنبه 07 اردیبهشت 1389, 10:28 صبح
بله توی script نوشتم

benyamin mirzai
سه شنبه 07 اردیبهشت 1389, 10:31 صبح
در واقع onchange را نمیشناسه

Vahid_moghaddam
سه شنبه 07 اردیبهشت 1389, 10:37 صبح
کد aspx رو بذارید

benyamin mirzai
سه شنبه 07 اردیبهشت 1389, 10:40 صبح
گذاشتم به این صورت
<asp:TextBox ID="nametxt" runat="server" OnChange="Check()" Enabled="true"></asp:TextBox>

benyamin mirzai
سه شنبه 07 اردیبهشت 1389, 10:44 صبح
و وقتی کد زیر را می نویسم
<asp:TextBox ID="nametxt" runat="server" OnTextChanged="Check()" Enabled="true" OnTextChanged="nametxt_TextChanged"></asp:TextBox>
و بهد روی textbox کلیک می کنم کد زیر در asp می اد

protected void Check()(object sender, EventArgs e)
{
}
که error میده

Behrouz_Rad
سه شنبه 07 اردیبهشت 1389, 10:55 صبح
این مورد رو باید با jQuery پیاده سازی کنی... یک نمونه واست نوشتم:


<div id="txtContainer">
<input disabled="disabled" type="button" id="btn" />
<input type="text" id="txt1" />
<input type="text" id="txt2" />
<input type="text" id="txt3" />
</div>




function checkTxt(event) {
var isAllChecked = true;
$("#txtContainer input:text").each(function() {
if ($.trim(this.value).length < 1) {
isAllChecked = false;
return false;
}
});

if (isAllChecked) {
$("#btn").removeAttr("disabled");
}
else {
$("#btn").attr("disabled", "disabled");
}
}

$(function() {
$("#txtContainer input:text").keyup(checkTxt);
});

بهتره TextBox ها رو در یک Container بگذاری تا دسترسی به اونها راحت تر باشه. در این حالت با بحث ClientID درگیر نمیشی.

سوال به بخش jQuery منتقل شد.

موفق باشید.

Nightbat
سه شنبه 07 اردیبهشت 1389, 13:42 عصر
این دقیقا کدیه که من نوشتم و داره کار می کنه:


<script language="javascript" type="text/javascript">
function Check() {
var txt1 = document.getElementById('<%=TextBox1.ClientID %>');
var txt2 = document.getElementById('<%=TextBox2.ClientID %>');
if (txt1.value != "" && txt2.value != '') {
document.getElementById('Button1').disabled = false;
}
}
</script>

و این هم تگ تکست باکس:


<asp:TextBox ID="TextBox1" runat="server" onchange="Check()"></asp:TextBox>

Behrouz_Rad
سه شنبه 07 اردیبهشت 1389, 14:32 عصر
این دقیقا کدیه که من نوشتم و داره کار می کنه:

کدی که شما نوشتی مشکلش اینه که وقتی تعداد TextBox ها زیاد بشه، نیاز داره تا کدهای بیشتری بهش اضافه بشه. ضمن اینکه تضمین Cross Browser بودن کدهای جاوا اسکریپت خیلی مهمه (در کل میگم)... قدرت jQuery با کدهای Native جاوا اسکریپت قابل مقایسه نیست.

موفق باشید.

Nightbat
سه شنبه 07 اردیبهشت 1389, 15:32 عصر
کدی که شما نوشتی مشکلش اینه که وقتی تعداد TextBox ها زیاد بشه، نیاز داره تا کدهای بیشتری بهش اضافه بشه. ضمن اینکه تضمین Cross Browser بودن کدهای جاوا اسکریپت خیلی مهمه (در کل میگم)... قدرت jQuery با کدهای Native جاوا اسکریپت قابل مقایسه نیست.

موفق باشید.

شما درست میگی. من این پست رو در جواب دوستی زدم که گفت کد من کار نمی کنه. منظورم این نبود که کد شما با کد من یکیه، مسلما در قدرت jQuery و درستی کد شما شکی نیست :چشمک: