C # с использованием текстового поля как «разместить его» / «липкая заметка» на стороне клиента - PullRequest
0 голосов
/ 20 мая 2011

Я хочу, чтобы текстовое поле действовало как «опубликовать» или «Стики», как виджет Igoogle или виджет Windows 7.

Идея

 <asp:TextBox ID="TextBox1" runat="server"> 
 </asp:TextBox>

Каждый раз, когда пользователь вводитв текстовое поле он вызывает javascript, чтобы сохранить текст в куки.

Может кто-нибудь дать мне подсказку?

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Это довольно быстро и грязно, но поможет вам.

В Интернете множество фрагментов setCookie / getCookie JS. Я использовал это:

http://www.dotnetspark.com/kb/1480-use-cookies-javascript-getcookie-setcookie.aspx

Код сейчас:

<input type="text" id="txtMemo" />

<script type="text/javascript">

function setCookie(CookieName, CookieVal, CookieExp, CookiePath, CookieDomain, CookieSecure)
{
     var CookieText = escape(CookieName) + '=' + escape(CookieVal); //escape() : Encodes the String
    CookieText += (CookieExp ? '; EXPIRES=' + CookieExp.toGMTString() : '');
    CookieText += (CookiePath ? '; PATH=' + CookiePath : '');
    CookieText += (CookieDomain ? '; DOMAIN=' + CookieDomain : '');
    CookieText += (CookieSecure ? '; SECURE' : '');

    document.cookie = CookieText;
}

// This functions reads & returns the cookie value of the specified cookie (by cookie name) 
function getCookie(CookieName)
{
    var CookieVal = null;
    if(document.cookie)       //only if exists
    {
           var arr = document.cookie.split((escape(CookieName) + '=')); 
           if(arr.length >= 2)
           {
               var arr2 = arr[1].split(';');
               CookieVal  = unescape(arr2[0]); //unescape() : Decodes the String
           }
    }
    return CookieVal;
}

var memoCookieName = "txtMemo_value";
var memoElementId = "txtMemo";

var memoElement = document.getElementById(memoElementId);

memoElement.value=getCookie(memoCookieName);
memoElement.onkeyup = function() {
    setCookie(memoCookieName,this.value, new Date(new Date().getTime()+1000*60*60*24*30));
};

 </script>

Это будет работать с простым HTML. В вашем случае с разметкой и элементами управления ASP.NET свойство ID имеет другое значение, поэтому вам нужно сообщить JS о действительном идентификаторе клиента. Таким образом, например:

(...)
var memoCookieName = "txtMemo_value";
var memoElementId = "<%= TextBox1.ClientID %>";

var memoElement = document.getElementById(memoElementId);
(...)
0 голосов
/ 20 мая 2011

Конечно. Играть с событием "изменить":

Речь идет об использовании этого события и обновлении некоторых файлов cookie, которые вы ранее также создавали с помощью JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...