PDA

View Full Version : مشکل جاوا اسکریپت در Updatepanel



delamtangete
سه شنبه 29 مرداد 1392, 00:19 صبح
من مشکلی که با اپدیت پنل دارم اینه که کد های جاوا بعد از postback (مثل فشرده شدن یه دکمه) از کار می افتند.
توی این برنامه من از کد جاوا برای تایپ مستقیم فارسی داخل تکست باکس استفاده کردم.در حالت عادی بعد از لود صفحه به درستی کار می کنه ولی بعد اینکه دکمه کلیک میشه از کار می افته:گیج:.داخل دکمه هم هیچ دستوری نوشته نشده:متعجب:!!!!
این کد html صفحه هستش
بعد این هم کد جاوای مربوط به فایل JavaFarsi.js رو قرار میدم. از عزیزانی که در این رابطه تجربه دارند و راه حل رو می دونن لطفا راهنمایی بکنن.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script src="JavaFarsi.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" ></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
After pressing the button JavaScript is not working :(
<br />
<asp:Label ID="Label1" runat="server" Text="This is a Persian Textbox: "></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" lang="fa"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="Submit !!!! :)" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>


اینم از کد های داخل فایل جاوا



/*
FarsiType
Version: 1.3.6
http://www.farsitype.ir
This script developed to ease typing Farsi (Persian) in web forms where there is no Farsi Keyboard installed on a PC.
Works with Internet Explorer, FireFox, Opera and Chrome.
For more information and getting the using manual please visit the script website (http://www.farsitype.ir).
Copyright 2002-2011 Kaveh Ahmadi (http://www.kavehahmadi.com, email: me@kavehahmadi.com).
Licensed under the GPL (http://www.opensource.org/licenses/gpl-license.php) license.
*/
// insertAdjacentHTML(), insertAdjacentText() and insertAdjacentElement() for Netscape 6/Mozilla by Thor Larholm me@jscript.dk
if (typeof HTMLElement != "undefined" && !HTMLElement.prototype.insertAdjacentElement) {
HTMLElement.prototype.insertAdjacentElement = function (where, parsedNode) {
switch (where) {
case 'beforeBegin':
this.parentNode.insertBefore(parsedNode, this)
break;
case 'afterBegin':
this.insertBefore(parsedNode, this.firstChild);
break;
case 'beforeEnd':
this.appendChild(parsedNode);
break;
case 'afterEnd':
if (this.nextSibling)
this.parentNode.insertBefore(parsedNode, this.nextSibling);
else
this.parentNode.appendChild(parsedNode);
break;
}
}
HTMLElement.prototype.insertAdjacentHTML = function (where, htmlStr) {
var r = this.ownerDocument.createRange();
r.setStartBefore(this);
var parsedHTML = r.createContextualFragment(htmlStr);
this.insertAdjacentElement(where, parsedHTML)
}

HTMLElement.prototype.insertAdjacentText = function (where, txtStr) {
var parsedText = document.createTextNode(txtStr)
this.insertAdjacentElement(where, parsedText)
}
}

//
var FarsiType = {
// Farsi keyboard map based on Iran Popular Keyboard Layout
farsiKey: [
32, 33, 34, 35, 36, 37, 1548, 1711,
41, 40, 215, 43, 1608, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 1705, 44, 61, 46, 1567,
64, 1616, 1584, 125, 1609, 1615, 1609, 1604,
1570, 247, 1600, 1548, 47, 8217, 1583, 215,
1563, 1614, 1569, 1613, 1601, 8216, 123, 1611,
1618, 1573, 126, 1580, 1688, 1670, 94, 95,
1662, 1588, 1584, 1586, 1740, 1579, 1576, 1604,
1575, 1607, 1578, 1606, 1605, 1574, 1583, 1582,
1581, 1590, 1602, 1587, 1601, 1593, 1585, 1589,
1591, 1594, 1592, 60, 124, 62, 1617
],
Type: true,
counter: 0,
ShowChangeLangButton: 0, // 0: Hidden / 1: Visible
KeyBoardError: 1, // 0: Disable FarsiType / 1: Show Error
ChangeDir: 0, // 0: No Action / 1: Do Rtl-Ltr / 2: Rtl-Ltr button
UnSupportedAction: 1 //0: Disable FarsiType / 1: Low Support
}
FarsiType.enable_disable = function (Dis) {
var invis, obj;

if (!Dis.checked) {
FarsiType.Type = true;
disable = false;
color = 'darkblue';
} else {
FarsiType.Type = false;
disable = true;
color = '#ECE9D8';
}

if (FarsiType.ShowChangeLangButton == 1) {
for (var i = 1; i <= FarsiType.counter; i++) {
obj = document.getElementById('FarsiType_button_' + i);
obj.disabled = disable;
obj.style.backgroundColor = color;
}
}
}

FarsiType.Disable = function () {
FarsiType.Type = false;
var Dis = document.getElementById('disableFarsiType')
if (Dis != null) {
Dis.checked = true;
}

if (FarsiType.ShowChangeLangButton == 1) {
for (var i = 1; i <= FarsiType.counter; i++) {
obj = document.getElementById('FarsiType_button_' + i);
obj.disabled = true;
obj.style.backgroundColor = '#ECE9D8';
}
}
}

FarsiType.init = function () {
var Inputs = document.getElementsByTagName('INPUT');
for (var i = 0; i < Inputs.length; i++) {
if (Inputs[i].type.toLowerCase() == 'text' || (Inputs[i].lang.toLowerCase() == 'fa' || Inputs[i].lang.toLowerCase() == 'fa-ir')) {

FarsiType.counter++;
new FarsiType.KeyObject(Inputs[i], FarsiType.counter);
}
}

var Areas = document.getElementsByTagName('TEXTAREA');
for (var i = 0; i < Areas.length; i++) {
if (Areas[i].lang.toLowerCase() == 'fa' || Areas[i].lang.toLowerCase() == 'fa-ir') {
FarsiType.counter++;
new FarsiType.KeyObject(Areas[i], FarsiType.counter);
}
}

var Dis = document.getElementById('disableFarsiType')
if (Dis != null) {
FarsiType.enable_disable(Dis);
Dis.onclick = new Function("FarsiType.enable_disable (this);")
}
}

FarsiType.KeyObject = function (z, x) {
GenerateStr = "";
if (FarsiType.ShowChangeLangButton == 1) {
GenerateStr = GenerateStr + "<input type='button' id=FarsiType_button_" + x + " style='border: none; background-color:darkblue; font-size:11; color:white; font-family:tahoma; padding: 1px; margin: 1px; width: auto; height: auto;' value='FA' />&nbsp;";
}
if (FarsiType.ChangeDir == 2) {
GenerateStr = GenerateStr + "<input type='button' id=FarsiType_ChangeDir_" + x + " style='border: none; background-color:darkblue; font-size:11; color:white; font-family:tahoma; padding: 1px; margin: 1px; width: auto; height: auto;' value='RTL' />"
}
z.insertAdjacentHTML("afterEnd", GenerateStr);

if (FarsiType.ShowChangeLangButton == 1) {
z.bottelm = document.getElementById('FarsiType_button_' + x);
z.bottelm.title = 'Change lang to english';
}
if (FarsiType.ChangeDir == 2) {
z.Direlm = document.getElementById('FarsiType_ChangeDir_' + x);
}

z.farsi = true;
z.dir = "rtl";
z.align = "right";

z.style.textAlign = z.align;
z.style.direction = z.dir;

setSelectionRange = function (input, selectionStart, selectionEnd) {
input.focus()
input.setSelectionRange(selectionStart, selectionEnd)
}

ChangeDirection = function () {
if (z.dir == "rtl") {
z.dir = "ltr";
z.align = "left";
z.Direlm.value = "LTR";
z.Direlm.title = "Change direction: Right to Left"
} else {
z.dir = "rtl";
z.align = "right";
z.Direlm.value = "RTL";
z.Direlm.title = "Change direction: Left to Right"
}
z.style.textAlign = z.align;
z.style.direction = z.dir;
z.focus();
}

ChangeLang = function (e, ze) {
if (ze)
z = ze;

if (FarsiType.Type) {
if (z.farsi) {
z.farsi = false;
if (FarsiType.ShowChangeLangButton == 1) {
z.bottelm.value = "EN";
z.bottelm.title = 'Change lang to persian';
}
if (FarsiType.ChangeDir == 1) {
z.style.textAlign = "left";
z.style.direction = "ltr";
}
} else {
z.farsi = true;
if (FarsiType.ShowChangeLangButton == 1) {
z.bottelm.value = "FA";
z.bottelm.title = 'Change lang to english';
}
if (FarsiType.ChangeDir == 1) {
z.style.textAlign = "right";
z.style.direction = "rtl";
}
}
z.focus();
}

if (e.preventDefault) e.preventDefault();
e.returnValue = false;
return false;
}

Convert = function (e) {

if (e == null)
e = window.event;

var key = e.which || e.charCode || e.keyCode;
var eElement = e.target || e.originalTarget || e.srcElement;

if (e.ctrlKey && key == 32) {
ChangeLang(e, z);
}

if (FarsiType.Type) {
if (
(e.charCode != null && e.charCode != key) ||
(e.which != null && e.which != key) ||
(e.ctrlKey || e.altKey || e.metaKey) ||
(key == 13 || key == 27 || key == 8)
) return true;

//check windows lang
if (key > 128) {
if (FarsiType.KeyBoardError == 0) {
FarsiType.Disable();
} else {
alert("لطفا زبان ویندوز را به انگلیسی تغییر دهید");
return false;
}
}

// If Farsi
if (FarsiType.Type && z.farsi) {

//check CpasLock
if ((key >= 65 && key <= 90 && !e.shiftKey) || (key >= 97 && key <= 122) && e.shiftKey) {
alert("روشن است لطفا خاموش نمایید(Caps Lock)کلید حروف بزرگ ");
return false;
}

// Shift-space -> ZWNJ
if (key == 32 && e.shiftKey)
key = 8204;
else
key = FarsiType.farsiKey[key - 32];

key = typeof key == 'string' ? key : String.fromCharCode(key);

// to farsi
try {

var docSelection = document.selection;
var selectionStart = eElement.selectionStart;
var selectionEnd = eElement.selectionEnd;

if (typeof selectionStart == 'number') {
//FOR W3C STANDARD BROWSERS
var nScrollTop = eElement.scrollTop;
var nScrollLeft = eElement.scrollLeft;
var nScrollWidth = eElement.scrollWidth;

eElement.value = eElement.value.substring(0, selectionStart) + key + eElement.value.substring(selectionEnd);
setSelectionRange(eElement, selectionStart + key.length, selectionStart + key.length);

var nW = eElement.scrollWidth - nScrollWidth;
if (eElement.scrollTop == 0) { eElement.scrollTop = nScrollTop }
} else if (docSelection) {
var nRange = docSelection.createRange();
nRange.text = key;
nRange.setEndPoint('StartToEnd', nRange);
nRange.select();
}

} catch (error) {
try {
// IE
e.keyCode = key
} catch (error) {
try {
// OLD GECKO
e.initKeyEvent("keypress", true, true, document.defaultView, false, false, true, false, 0, key, eElement);
} catch (error) {
//OTHERWISE
if (FarsiType.UnSupportedAction == 0) {
alert('Sorry! no FarsiType support')
FarsiType.Disable();
var Dis = document.getElementById('disableFarsiType')
if (Dis != null) {
Dis.disabled = true;
}
return false;
} else {
eElement.value += key;
}
}
}
}

if (e.preventDefault)
e.preventDefault();
e.returnValue = false;
}
}
return true;
}

if (FarsiType.ShowChangeLangButton == 1) { z.bottelm.onmouseup = ChangeLang; }
if (FarsiType.ChangeDir == 2) { z.Direlm.onmouseup = ChangeDirection; }
z.onkeypress = Convert;
}

if (window.attachEvent) {
window.attachEvent('onload', FarsiType.init)
} else if (window.addEventListener) {
window.addEventListener('load', FarsiType.init, false)
}

delamtangete
سه شنبه 29 مرداد 1392, 13:54 عصر
کسی سر در نیاورد؟!

fakhravari
پنج شنبه 31 مرداد 1392, 17:21 عصر
JavaFarsi.js اخر صفحه اضافه كن:لبخندساده: