记录Harde学习成长生活的点点滴滴.
2010-04-18 JavaScript


没有评论
40 次浏览

解决TinyMCE编辑器使用Ajax取不到的问题

今天把以前的项目动了点小手术
结果发现2个问题
一个是TinyMCE和jquery.blockUI一起用,firefox下是disabled状态….
目前没有解决办法

另外一个问题是使用ajaxForm时
POST中取不到textarea的值
查了下API
使用
tinyMCE.get(‘textarea的id’).getContent()就可以了
看到网上有网友问,顺便就写下来了
这样ajax提交可以这样

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
$('#form_addseriesSeries').submit(function(){
    $(this).ajaxSubmit({
	success:response,
	data:{description:tinyMCE.get('inputbox').getContent()}
    });
    $.unblockUI();
    return false;
});

OK~收工

2010-04-14 JavaScript,PHP


没有评论
90 次浏览

Javascript生成json(可以用php的json_decode解码)

这几天迷上了JSON,连项目中一些XML的工作都交给了JSON
话说JSON真的比XML方便的多啊…

但是有个问题
虽然JS解码JSON非常方便,但是编码似乎没有什么好办法…
本着能懒即懒,不能懒也尽量懒的原则,古狗了一下
还真让我发现了
PHP里直接用json_decode就可以解码,用起来相当方便

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function json_encode_js(aaa){
        function je(str){
            var a=[],i=0;
            var pcs="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            for (;i<str.length;i++){
                if(pcs.indexOf(str[i]) == -1)
                    a[i]="\\u"+("0000"+str.charCodeAt(i).toString(16)).slice(-4);
                else
                    a[i]=str[i];
            }
            return a.join("");
        }
        var i,s,a,aa=[];
        if(typeof(aaa)!="object") {alert("ERROR json");return;}
        for(i in aaa){
            s=aaa[i];
            a='"'+je(i)+'":';
            if(typeof(s)=='object'){
                a+=json_encode_js(s);
            }else{
                if(typeof(s)=='string')
                    a+='"'+je(s)+'"';
                else if(typeof(s)=='number')
                    a+=s;
            }
            aa[aa.length]=a;
        }
        return "{"+aa.join(",")+"}";
    }

话说,看着aaa的变量名有点不爽,我给改掉了...
同样有不爽的...自己改去,我是不会提供的..o(∩_∩)o 哈哈

3个常见的Flash轮显广告源码

代码我就不Copy了
除了第一个剩下2个都是JS+Flash实现的
代码不是很复杂
3个特效我放在一个压缩包里了

flashe8bdaee698bee5b9bfe5918a1

flashe8bdaee698bee5b9bfe5918a2

flashe8bdaee698bee5b9bfe5918a3

(源码出自懒人图库,不过我刚才去时发现提示有恶意代码……不过那里面的东西很不错,大家可以开着杀毒软件进去杀一圈)
点击下载 flash广告.rar

2009-05-03 JavaScript


没有评论
9 次浏览

用JavaScript简单验证浏览器版本

摘自:脚本之家 原文地址http://www.jb51.net/article/15299.htm

有删节,有修正

 是否为opera

<script> 
is_opera = /opera/i.test(navigator.userAgent); 
alert(is_opera); 
</script> 

 

是否是IE

<script> 
is_opera = /opera/i.test(navigator.userAgent);  
var is_ie = (/msie/i.test(navigator.userAgent) && !is_opera) 
alert(is_ie); 
</script>

 

是否为IE7

<script>
is_opera = /opera/i.test(navigator.userAgent);  
var is_ie = (/msie/i.test(navigator.userAgent) && !is_opera) 
alert(is_ie && /msie 7\.0/i.test(navigator.userAgent));
</script>

 

检测IE

<script> 
   if(document.uniqueID){ 
         alert("脚本在IE浏览器中运行!"); 
     }else{ 
         alert("脚本在非IE浏览器中运行!"); 
     } 

</script>

【转】用AJAX实现google输入自动完成的简单模拟

本文转载自:http://www.vs2005.com/Ajax/a427p1.aspx

比较简单的模拟,文本框输入CompanyName,然后
搜索SqlServer2000 里NorthWind数据库 Suppliers表的CompanyName字段,
然后实现自动完成

四个文件
1 .AutoComplete.htm

?View Code HTML4TS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<!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>
    <title>输入自动完成</title>
    <script language="javascript">
        //输入信息的文本框
        var txtInput;
        //下拉表当前选中项的索引 
        var currentIndex = -1; 
 
        //初始化参数,和下拉表位置
        function initPar()
        {
             txtInput = document.getElementById("txtCompanyName");
             //设置下拉表 相对于 文本输入框的位置 
             setPosition();
        } 
 
        //设置下拉表 相对于 文本输入框的位置
        function setPosition()
        {
            var width = txtInput.offsetWidth;
            var left = getLength("offsetLeft");
            var top = getLength("offsetTop") + txtInput.offsetHeight;
 
            divContent.style.left = left + "px";
            divContent.style.top = top + "px"; 
            divContent.style.width = width + "px";
        } 
 
       //获取对应属性的长度 
        function getLength(attr)
        {
            var offset = 0;
            var item = txtInput;
            while (item)
            {
                offset += item[attr];
                item = item.offsetParent;
            } 
            return offset; 
        } 
 
        //自动完成
        function autoComplete()
        {
            //如果按下 向上, 向下 或 回车
            if (event.keyCode == 38 || event.keyCode == 40 || event.keyCode == 13)
            { 
                //选择当前项 
                selItemByKey();
            } 
            else //向服务器发送请求
            { 
                //如果值为空 
                if (txtInput.value == "")
                {
                    divContent.style.display='none'; 
                    return;
                } 
                //恢复下拉选择项为 -1 
                currentIndex = -1; 
 
                //开始请求
                requestObj = new ActiveXObject("Microsoft.XMLHTTP");
                requestObj.onreadystatechange = displayResult;
                requestObj.open("POST", "AutoComplete.aspx?ts=" + new Date().toLocaleString(), true);
                requestObj.send(txtInput.value); 
            } 
        } 
 
        //显示结果 
        function displayResult()
        {
             if (requestObj.readyState == 4)
             {
                     showData();
                     divContent.style.display = "";
             } 
        } 
 
        //显示服务器返回的结果 ,并形成下拉表
        function showData()
        {
             //获取数据 
             var doc = new ActiveXObject("MSXML2.DOMDocument.3.0");
             doc.loadXML(requestObj.responseText);
 
             //显示数据的xslt 
             var docStyle = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
             docStyle.async = false; 
             docStyle.load("list.xslt");
 
             var docTemplate = new ActiveXObject("MSXML2.XSLTemplate");
             docTemplate.stylesheet = docStyle;
 
             //通过xslt转换xml数据 
             var processor = docTemplate.createProcessor();
             processor.input = doc;
             processor.transform();
             var res = processor.output;
 
             //显示转后后的结果
             divContent.innerHTML = res; 
        } 
 
        //通过键盘选择下拉项 
        function selItemByKey()
        {
            //下拉表 
            var tbl = document.getElementById("tblContent"); 
            if (!tbl)
            {
                return; 
            } 
            //下拉表的项数
            var maxRow = tbl.rows.length; 
            //向上 
            if (event.keyCode == 38 && currentIndex > 0)
            {
                 currentIndex--;
            } 
            //向下 
            else if (event.keyCode == 40 && currentIndex < maxRow-1)
            {
                 currentIndex++;
            }
            //回车 
            else if (event.keyCode == 13)
            {
                selValue();
                return;
            } 
 
            clearColor();
            txtInput.value = tbl.rows[currentIndex].innerText; 
            //设置当前项背景颜色为blue 标记选中 
            tbl.rows[currentIndex].style.backgroundColor = "InfoBackground"; 
        } 
 
        //清除下拉项的背景颜色 
        function clearColor()
        {
             var tbl = document.getElementById("tblContent");
             for (var i = 0; i < tbl.rows.length; i++)
             {
                    tbl.rows[i].style.backgroundColor = ""; 
             } 
        } 
 
        //选择下拉表中当前项的值 ,用于按回车或鼠标单击选中当前项的值
        function selValue()
        {
            if (event.keyCode != 13)
            { 
                var text = event.srcElement.innerText;
                txtInput.value = text; 
            } 
            initList(); 
        } 
 
        //文本框失去焦点时 设置下拉表可见性 
        function setDisplay()
        {
            //获取当前活动td的表格 
            if (document.activeElement.tagName == "TD")
            {
                 var tbl = document.activeElement.parentElement.parentElement.parentElement; 
                //如果不是下拉表,则隐藏 下拉表 
                if (tbl.id != "tblContent")
                {
                    initList();
                }
                return;
            } 
 
            initList();
 
        } 
 
        function initList()
        {
            divContent.style.display='none'; 
            divContent.innerHTML = "";
            currentIndex = -1;
        } 
    </script>
</head>
<body onload="initPar()">
CompanyName<input type="text" id="txtCompanyName" onkeyup="autoComplete()" onblur="setDisplay();" style="width:400px"/>
<!-- 显示下拉表的div-->
<div id="divContent" style="display:none; position:absolute; ">
</div>
</body>
</html>

AutoComplete.aspx

?View Code CSHARP
1
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AutoComplete.aspx.cs" Inherits="AJAXBaseHome.AutoComplete" %>

AutoComplete.aspx.cs

?View Code CSHARP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.IO;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Configuration;
 
namespace AJAXBaseHome
{
    public partial class AutoComplete : System.Web.UI.Page
    {
        private static string conString = WebConfigurationManager.ConnectionStrings["myData"].ConnectionString;
 
        protected void Page_Load(object sender, EventArgs e)
        {
            string input = GetInput();
            Response.Write(GetCompanyName(input));
        }
 
        //获取输入的字符串
        private string GetInput()
        {
            Stream s = Request.InputStream;
            int count = 0;
            byte[] buffer = new byte[1024];
            StringBuilder builder = new StringBuilder();
            while ((count = s.Read(buffer, 0, 1024)) > 0)
            {
                builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
            }
 
            return builder.ToString();
        }
 
        private string GetCompanyName(string input)
        {
            using (SqlConnection con = new SqlConnection(conString))
            {
                SqlCommand command = new SqlCommand("select * from suppliers where CompanyName like @Name", con);
                command.Parameters.Add(new SqlParameter("@name", input + "%"));
                SqlDataAdapter adapter = new SqlDataAdapter(command);
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                return ds.GetXml();
            }
        }
    }
}

xslt文件 用于显示xml数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:template match="/">
    <xsl:apply-templates/>
  </xsl:template>
  <xsl:template match="NewDataSet">
    <table id="tblContent" style="background-color:GrayText">
    <xsl:for-each select="Table">
      <tr>
        <!--td中单击时选择当前值, 鼠标在上时更改行背景颜色,鼠标离开后清除背景颜色-->
        <td onclick="selValue()" style="cursor:hand" onmouseover="clearColor();this.parentElement.style.backgroundColor='InfoBackground'" onmouseout="clearColor()">
          <xsl:value-of select="CompanyName"/>
        </td>
      </tr>
    </xsl:for-each>
    </table>
  </xsl:template>
</xsl:stylesheet>