سلام من یک صفحه دارم دارای چندین textbox و یک دکمه send هم دارم به طور default دکمه من disable است می خواهم به محض پر شدن textbox هایم دکمه enable شود به چه صورت انجام دهم ؟
سلام من یک صفحه دارم دارای چندین textbox و یک دکمه send هم دارم به طور default دکمه من disable است می خواهم به محض پر شدن textbox هایم دکمه enable شود به چه صورت انجام دهم ؟
میشه از ontextchanged استفاده کرد ولی نیاز به Postback داره ، حتما راه بهتری هم هست
اخه یه textbox نیست که از ontextchanged استفاده کنم باید همشون پر شند بعد enable شود
خب همشون همین event رو دارن ، ولی همونطور که گفتم راه حل خوبی نیست ، چون نیاز به PostBack داره
باید از javascript استفاده کنید. متن هر textbox وقتی تغییر می کنه چک کنید ببینید textbox ها دارای متن هستند یا نه. اگه بودند دکمه رو enable کنید
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>
دوست عزیز دستور onchange="Check() را نمیشناسه و اگه از
OnTextChanged="Check()" استفاده کنم error مده
اینطوری نوشتید؟
<script>
function Check()
{
.
.
.
}
</script>
بله توی script نوشتم
در واقع onchange را نمیشناسه
کد aspx رو بذارید
گذاشتم به این صورت
<asp:TextBoxID="nametxt"runat="server"OnChange="Check()"Enabled="true"></asp:TextBox>
و وقتی کد زیر را می نویسم
<asp:TextBoxID="nametxt"runat="server"OnTextChanged="Check()"Enabled="true"OnTextChanged="nametxt_TextChanged"></asp:TextBox>
و بهد روی textbox کلیک می کنم کد زیر در asp می اد
protectedvoid Check()(object sender, EventArgs e)
{
}
که error میده
این مورد رو باید با 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 منتقل شد.
موفق باشید.
این دقیقا کدیه که من نوشتم و داره کار می کنه:
<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>
کدی که شما نوشتی مشکلش اینه که وقتی تعداد TextBox ها زیاد بشه، نیاز داره تا کدهای بیشتری بهش اضافه بشه. ضمن اینکه تضمین Cross Browser بودن کدهای جاوا اسکریپت خیلی مهمه (در کل میگم)... قدرت jQuery با کدهای Native جاوا اسکریپت قابل مقایسه نیست.نوشته شده توسط Nightbat
موفق باشید.