Jquery radio控制隐藏/显示

Continue Read..
点击查看原图
重点在:gpv="bq"和gpv="bq属性的添加

HTML:
<tr>
                    <td width="100">皮肤粘膜</td>
                    <td>特殊情况:<input type="radio" gp="pfnm" id="ctpfnm_ts_w" name="ctpfnm_ts" value="无" />&nbsp;<label for="ctpfnm_ts_w">无</label>&nbsp;<input type="radio" gp="pfnm" id="ctpfnm_ts_y" name="ctpfnm_ts" value="有" />&nbsp;<label for="ctpfnm_ts_y">有</label>&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" gpv="pfnm" id="ctpfnm_y_sz" name="ctpfnm_y" /><label gpv="pfnm" for="ctpfnm_y_sz">&nbsp;水肿</label>&nbsp;&nbsp;<input type="checkbox" id="ctpfnm_y_hr" name="ctpfnm_y" gpv="pfnm" /><label for="ctpfnm_y_hr" gpv="pfnm">&nbsp;黄染</label>&nbsp;&nbsp;<input type="checkbox" id="ctpfnm_y_zg" name="ctpfnm_y" gpv="pfnm" /><label for="ctpfnm_y_zg" gpv="pfnm">&nbsp;紫绀</label>&nbsp;&nbsp;<input type="checkbox" id="ctpfnm_y_cb" name="ctpfnm_y" gpv="pfnm" /><label for="ctpfnm_y_cb" gpv="pfnm">&nbsp;苍白</label>&nbsp;&nbsp;<input type="checkbox" id="ctpfnm_y_zd" name="ctpfnm_y" gpv="pfnm" /><label for="ctpfnm_y_zd" gpv="pfnm">&nbsp;紫癜</label>&nbsp;&nbsp;<input type="checkbox" id="ctpfnm_y_yb" name="ctpfnm_y" gpv="pfnm" /><label for="ctpfnm_y_yb" gpv="pfnm">&nbsp;瘀斑</label>&nbsp;&nbsp;<input type="checkbox" id="ctpfnm_y_yd" name="ctpfnm_y" gpv="pfnm" /><label for="ctpfnm_y_yd" gpv="pfnm">&nbsp;瘀点</label>&nbsp;&nbsp;<input type="checkbox" id="ctpfnm_y_zzz" name="ctpfnm_y" gpv="pfnm" /><label for="ctpfnm_y_zzz" gpv="pfnm">&nbsp;蜘蛛痣</label>&nbsp;&nbsp;<input type="checkbox" id="ctpfnm_y_ts" name="ctpfnm_y" gpv="pfnm" /><label for="ctpfnm_y_ts" gpv="pfnm">&nbsp;脱水</label>&nbsp;&nbsp;<input type="checkbox" id="ctpfnm_y_pxxz" name="ctpfnm_y" gpv="pfnm" /><label for="ctpfnm_y_pxxz" gpv="pfnm">&nbsp;皮下血肿</label>&nbsp;&nbsp;<input type="checkbox" id="ctpfnm_y_other" name="ctpfnm_y" gpv="pfnm" /><label for="ctpfnm_y_other" gpv="pfnm">&nbsp;其他</label></td>
                  </tr>
                  <tr>
                    <td>鼻腔</td>
                    <td>特殊情况:<input type="radio" gp="bq" id="ctbq_ts_w" name="ctbq_ts" value="无" />&nbsp;<label for="ctbq_ts_w">无</label>&nbsp;<input type="radio" gp="bq" id="ctbq_ts_y" name="ctbq_ts" value="有" />&nbsp;<label for="ctbq_ts_y">有</label>&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" gpv="bq" id="ctbq_ts_y_bzgpw" name="ctbq_ts_y" /><label gpv="bq" for="ctbq_ts_y_bzgpw">&nbsp;鼻中隔偏歪</label>&nbsp;&nbsp;<input type="checkbox" id="ctbq_ts_y_bjfd" name="ctbq_ts_y" gpv="bq" /><label for="ctbq_ts_y_bjfd" gpv="bq">&nbsp;鼻甲肥大</label>&nbsp;&nbsp;<input type="checkbox" id="ctbq_ts_y_bxr" name="ctbq_ts_y" gpv="bq" /><label for="ctbq_ts_y_bxr" gpv="bq">&nbsp;鼻息肉</label>&nbsp;&nbsp;<input type="checkbox" id="ctbq_ts_y_bqzl" name="ctbq_ts_y" gpv="bq" /><label for="ctbq_ts_y_bqzl" gpv="bq">&nbsp;鼻腔肿瘤</label>&nbsp;&nbsp;<input type="checkbox" id="ctbq_ts_y_ybx" name="ctbq_ts_y" gpv="bq" /><label for="ctbq_ts_y_ybx" gpv="bq">&nbsp;易鼻衄</label>&nbsp;&nbsp;<input type="checkbox" id="ctbq_ts_y_other" name="ctbq_ts_y" gpv="bq" /><label for="ctbq_ts_y_other" gpv="bq">&nbsp;其他</label></td>
                </tr>

脚本:
<script type="text/javascript">
        $(function () {
            $("input[type=radio][gp][value='无']").attr("checked", 'checked');
            //$("input[gpv]").attr("disabled", true); //默认为无,其它值则设置属性disabled
            $("[gpv]").hide();//默认为无,其它值则隐藏

            RadioClick();
        });
        function RadioClick() {
            $("input[type='radio'][gp]").bind("click", function () {
                if ($(this).val() == '无') {
                    $("input[gpv='" + $(this).attr("gp") + "']").hide();
                    $("label[gpv='" + $(this).attr("gp") + "']").hide();

                    //$("input[gpv='" + $(this).attr("gp") + "']").attr("disabled", true);
                    //$("label[gpv='" + $(this).attr("gp") + "']").attr("disabled", true);
                } else {
                    $("input[gpv='" + $(this).attr("gp") + "']").show();
                    $("label[gpv='" + $(this).attr("gp") + "']").show();

//                    $("input[gpv='" + $(this).attr("gp") + "']").attr("disabled", false);
//                    $("label[gpv='" + $(this).attr("gp") + "']").attr("disabled", false);
                }
            });
        }        
    </script>

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

textarea 在浏览器中固定大小和禁止拖动

Continue Read..
1:彻底禁用拖动(推荐)
resize: none;
2:只是固定大小,右下角的拖动图标仍在
width: 200px;
height: 100px;
max-width: 200px;
max-height: 100px;
3:浏览器信息:
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.218 Safari/535.1

json序列化实例

Continue Read..

(1)例子一:

//需要反序列化的json


{
"cur_page":1,
"total_num":4,
"data":
[
{"title":"\u4e50\u5668","thread_id":111},
{"title":"\u4eca\u65e5","thread_id":112},
{"title":"\u4eca\u65e5","thread_id":113},
{"title":"\u4eca\u65e5","thread_id":114},
]

}


这个问题的答案
    [DataContractAttribute]
    public class BAIDU {
        [DataMember]
        public int cur_page { get; set; }
        [DataMember]
        public int total_num { get; set; }
        [DataMember]
        public List<Data> data{get;set;}

        public class Data {
            public string title { get; set; }
            public int thread_id { get; set; }
        }
    }

            string json = "{\"cur_page\":1,\"total_num\":4,\"data\": [{\"title\":\"\\u4e50\\u5668\",\"thread_id\":111}, {\"title\":\"\\u4eca\\u65e5\",\"thread_id\":112}, {\"title\":\"\\u4eca\\u65e5\",\"thread_id\":113}, {\"title\":\"\\u4eca\\u65e5\",\"thread_id\":114}]}";

DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(BAIDU));
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) {
                BAIDU baidu = (BAIDU)ser.ReadObject(ms);
//baidu 就是反序列化后的结果
                ms.Close();
}

(2)例子二:

[{\"Name\":\"abc\",\"Url\":\"http://dotnet.aspx.cc/\"},{\"Name\":\"zzz\",\"Url\":\"http://zzz.zzz.cc/\"}] 


list<preson>

preson{public string name;public string url;} 


private void frm_Load(object sender, EventArgs e)
{          
            String JSONString = "{\"Name\":\"小明\",\"Url\":\"http://www.asp.com/\"},{\"Name\":\"小红\",\"Url\":\"http://www.abc.com/\"}";
            DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(List<Person>));
            MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(JSONString)); 
            List<Person> list = (List<Person>)ds.ReadObject(ms);
            ms.Close();
} 

json 序列化和反序列化

Continue Read..
方法一:引入 System.Web.Script.Serialization 命名空间使用 JavaScriptSerializer 类实现简单 的序列化 
序列化类:Personnel 
public class Personnel 
public int Id { get; set; } 
public string Name { get; set; } 
执行序列化反序列化: 
代码 
        public string r1="";
protected void Page_Load(object sender, EventArgs e) 
Personnel personnel = new Personnel(); 
personnel.Id = 1; personnel.Name = "小白"; 
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); 
//执行序列化 
r1 = jsonSerializer.Serialize(personnel); 
//执行反序列化 
Personnel _Personnel = jsonSerializer.Deserialize<Personnel>(r1); 
r1输出结果:{"Id":1,"Name":"小白"} 

前端脚本调用:
var ss=<%=r1%>;
alert(ss.Id);

输出结果:
1

可以使用 ScriptIgnore 属性标记不序列化公共属性或公共字段. 
public class Personnel 
[ScriptIgnore]
public int Id { get; set; } 
public string Name { get; set; } 
r1输出结果:{"Name":"小白"} 

方法二:引入 System.Runtime.Serialization.Json 命名空间使用 DataContractJsonSerializer 类 实现序列化 
序列化类:People 
public class People 
public int Id { get; set; } 
public string Name { get; set; } 
执行序列化反序列化 
代码 
protected void Page_Load(object sender, EventArgs e) 
People people = new People(); 
people.Id = 1; 
people.Name = "小白"; 

DataContractJsonSerializer json = new DataContractJsonSerializer(peo ple.GetType()); 
string szJson = ""; 
//序列化 
using (MemoryStream stream = new MemoryStream()) 
json.WriteObject(stream, people); 
szJson = Encoding.UTF8.GetString(stream.ToArray()); } 
//反序列化 
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetByt es(szJson))) 
DataContractJsonSerializer serializer = new DataContractJsonSeria lizer(typeof(People)); 
People _people = (People)serializer.ReadObject(ms); 
szJson 输出结果:{"Id":1,"Name":"小白"} 
可 以 使用 IgnoreDataMember:指 定 该成 员不 是数 据协 定 的一 部分 且没 有进行 序 列化 , DataMember:定义序列化属性参数,使用 DataMember 属性标记字段必须使用 DataContract 标记类 否则 DataMember 标记不起作用. 

代码 
[DataContract] 
public class People 
[DataMember(Name = "id")] 
public int Id { get; set; } 
[IgnoreDataMember] 
public string Name { get; set; } 
输出结果: {"id":1}

asp.net RegisterClientScriptBlock 与 RegisterStartupScript 的区别

Continue Read..
RegisterClientScriptBlock、RegisterStartupScript 都是注册一个脚本块。

ClientScript.RegisterClientScriptBlock(this.GetType(), "script1", "alert(1);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert(2);", true);
它们的区别就是 RegisterClientScriptBlock 是注册在 body 最前面,而 RegisterStartupScript 是注册在 body 最后面。

为什么这样呢?

1.第二个参数 key
第二个参数 key 是用来避免重复注册的(方法名称相同的,则第二个参数不可相同)

2.详细用法
区别,那就是 RegisterClientScriptBlock 将脚本代码写在 <form> 之后,而 RegisterStartupScript 将代码写在 </form>(注意是结束标签)之前

public void RegisterClientScriptBlock(Type type, string key, string script)
public void RegisterClientScriptBlock(Type type, string key, string script, bool addScriptTags)
public void RegisterStartupScript(Type type, string key, string script)
public void RegisterStartupScript(Type type, string key, string script, bool addScriptTags)
可以看出二者语法相同。

type 要注册的启动脚本的类型。
key 要注册的启动脚本的键,也就是你自己给这段脚本起的名字。相同 key 的脚本被当作是重复的,对于这样的脚本只输出最先注册的,ClientScriptBlock 和 StartupScript 中的 key 相同不算是重复的。
script 脚本代码。
addScriptTags 是否添加 <script> 标签,如果脚本代码中不含 <script> 标签,则应该指定该值为 true,若不指定该值,会被当作 false 对待。

如:
ClientScript.RegisterClientScriptBlock(this.GetType(), "key1", @"function Go()
{
    alert('');
}", true);
ClientScript.RegisterStartupScript(this.GetType(), "key1", "Go();", true);

3.如何换行
alert("第一行\\r\\n第二行");
加上转义字符。

4.输出位置的区别
 

Page.Response.Write("<script>var response;</script>");

Page.RegisterStartupScript("RegisterStartupScript","<script>var RegisterStartupScript;</script>");

Page.RegisterClientScriptBlock("RegisterClientScriptBlock","<script>var RegisterClientScriptBlock;</script>");
Response.Write 输出后的位置在源文件的第一行。
RegisterClientScriptBlock 输出后的位置会在 <form> 的下一行(在 ASP.NET 自带的脚本和一些隐藏域之下)。
RegisterStartupScript 输出后的位置会在 </form> 的上一行。

如果要想客户端脚本尽可能早的执行,则可以使用 RegisterClientScriptBlock 或 Response.Write(不推荐用 Response.Write 输出脚本,它破坏了网页的结构。千一网络编辑注)。

RegisterClientScriptBlock 一般返回的是客户端函数的包装,而 RegisterStartupScript 返回得函数在 Document 装载完成后会执行,类似于我们平时所说的 <body onload="f()"> 里面的函数;这两个方法在客户端呈现的代码位置不同,RegisterClientScriptBlock 在 <form runat=server> 之后,而 RegisterStartupScript 在 </form> 之前。

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

sql之left join、right join、inner join、full join的区别

Continue Read..
外连接:
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
full join(外连接)返回两个表中的行 left join + right join

内连接:
inner join(等值连接) 只返回两个表中联结字段相等的行

交叉连接:
cross join(交叉连接):结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。


举例如下: 
--------------------------------------------
表A记录如下:
aID     aNum
1     a20050111
2     a20050112
3     a20050113
4     a20050114
5     a20050115

表B记录如下:
bID     bName
1     2006032401
2     2006032402
3     2006032403
4     2006032404
8     2006032408

--------------------------------------------
1.left join
sql语句如下: 
select * from A
left join B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115    NULL     NULL

(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
--------------------------------------------
2.right join
sql语句如下: 
select * from A
right join B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
NULL     NULL     8     2006032408

(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
--------------------------------------------
3.inner join
sql语句如下: 
select * from A
innerjoin B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404

结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
--------------------------------------------

4.full join
sql语句如下: 
select * from A
full  join B 
on A.aID = B.bID

aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115        NULL       NULL
NULL     NULL     8     2006032408

结果说明:
full join 关键字会从左表 (A) 和右表 (B) 那里返回所有的行。如果 "A" 中的行在表 "B" 中没有匹配,或者如果 "B" 中的行在表 "A" 中没有匹配,这些行同样会列出。
--------------------------------------------
注: 
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误. 

Jquery enter键切换文本框焦点

Continue Read..

(一)纯input控件:

html:

<div>

        <asp:TextBox ID="txt1" runat="server" /><br />

        <asp:TextBox ID="txt2" runat="server" /><br />

        <asp:TextBox ID="txt3" runat="server" /><br />

        <asp:TextBox ID="txt4" runat="server" /><br />

    </div>

 

jquery:

<script type="text/javascript">

        $(function () {

        $('input:text:first').focus();

        var $inp = $('input:text');

        $inp.bind('keydown', function (e) {

 

            var key = e.which;

            if (key == 13) {

                e.preventDefault();

                var nxtIdx = $inp.index(this) + 1;

                $(":input:text:eq(" + nxtIdx + ")").focus();

            }

        });

    });

    </script>

(二)包含textarea控件:

 html:

<div>

        <asp:TextBox ID="tb1" runat="server" class="cls" /><br />

        <asp:TextBox ID="tb2" runat="server" class="cls" /><br />

        <asp:TextBox ID="tb3" TextMode="MultiLine" runat="server" class="cls" /><br />

        <asp:TextBox ID="tb4" runat="server" class="cls" /><br />

    </div>

jquery:

<script type="text/javascript">

        $(function () {

            $('input:text:first').focus();

            var $inp = $('.cls');

            $inp.bind('keydown', function (e) {

                var key = e.which;

                if (key == 13) {

                    e.preventDefault();

                    var nxtIdx = $inp.index(this) + 1;

                    $(".cls:eq(" + nxtIdx + ")").focus();

                }

            });

        });

    </script>

Jquery 文本框的enter键(搜索按钮click事件)

Continue Read..
Js:
$(function () {
var $inp = $('input:text');
            var search = $(".search").find("[id$='_btnSearch']");

            $inp.bind('keydown', function (e) {
                if (e.which == 13) {
                    e.preventDefault();
                    search.click();
                    return false;
                }
            });
});


html:
<div class="search">
            <table cellspacing="0" cellpadding="0" class="searchTable twosearch">
                <tr>
                    <td width="350">
                        编码/名称/查询码:<asp:TextBox ID="tbSectionCode" runat="server" style="width:200px;"></asp:TextBox>
                    </td>
                    <td>
                            <asp:CheckBox ID="cdlcxyf" runat="server" />&nbsp;是否药房
                    </td>
                    <td>
                         <asp:Button ID="btnSearch" runat="server" Text="立即搜索" onclick="btnSearch_Click" />
                    </td>
                    <td align="right">
                            <span class="buttons">
                                <a name="exam" class="controlBtn" onclick="sectionadd()" style="cursor:pointer;">新增</a><a name="exam" class="controlBtn" onclick="sectionexport()" style="cursor:pointer;">导入</a>
                            </span>
                    </td>
                </tr>
            </table>
        </div>

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

【PHP】TP多图上传

Continue Read..

早上扣了个swf的多图片上传的  基于TP写的 打包放附件了..要的自己下

点击查看原图

 

 

 

//修改的时候需要的代码

foreach($data['img'] as $key=>$v){ 

$tempimgstr = '<div class="fl ml5 mt5 text_center" rel="'.$v.'"><img src="'.$v.'" align="absmiddle"><br><a href="javascript:ershoudelpic(\\\''.$v.'\\\');" class="ershoudelpic">删除</a></div>';

echo "<script>$('#uploaded').append('".$tempimgstr."');</script>";

echo "<script>upimgs.push('".$v."');</script>";

echo "<script>$('#uploadimgs').val(upimgs.join(','));</script>";

}

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

PHP 解决IE、360、搜狗浏览器无法设置(获取)(种植)COOKIE、SESSION丢失的问题(火狐、谷歌浏览器下正常)

Continue Read..
PHP 解决IE、360、搜狗浏览器无法设置(获取)(种植)COOKIE、SESSION丢失的问题(火狐、谷歌浏览器下正常)
程序如下:
-----------1.php----------------
session_start();
$_SESSION['enCode'] = $enCode;   //建session

----------2.php----------------
session_start();
$enCode=strtolower($_POST["enCode"]);
$tureEncode=strtolower($_SESSION['enCode']);

if($enCode == $tureEncode && $enCode != "" && $tureEncode!= ""){
//$_SESSION['validationcode']=""; //如果清空,在IE内核浏览器下获取到的session值永远为空(火狐、谷歌浏览器下正常)
....相关程序操作....
}

备忘:经测试发现,在IE、360、搜狗浏览器下,如果2.php中写了清空sesssion的程序,不管写在任何位置,整个页面将获取不到session值,程序似乎不是按照从上到下的原则运行;但在火狐、谷歌浏览器下则是正常的能获取到session。

==========================其他相关原因记录===============
1 服务器端出错/文件编码不统一。 如像PHP中,使用session_start() 或者setcookie() 函数之前出现了输出内容,如 header(),或者空白字符像UTF-8编码中BOM ,又或者文件等编码格式不对。
2  服务器的时间设置不正确( 服务器的时间和本地不一致)。 像在PHP中,session_set_cookie_params(),setcookie() 的lifetime 参数不正常。这一问题尤其在chrome与IE下面很明显,cookie值根本就无法写入,friefox却不没有影响。
3  域名不正确。如:fc_lamp.com 这是一个不正确的域名,当使用IE浏览器访问时,COOKIE是无法被成功设置(种植)的。但在friefox、chrome浏览器中没有问题。

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权