jquery实现鼠标移到层上面实现边框加色效果

要实现多个li实现的边框显示,但给li设定一个border:1px #fff solid后,发现有以下问题.两个相邻的li放在一起,就会显示边框宽度为2px的问题.

jquery-demo-mouse-0



 
 
 
 演示代码

 



 

实现原理:

默认情况下,多个li的边框都发生重复问题.就是相信的边框会显示两个边线.而通过 margin-left:-1可以实现左侧重复边线只显示一个,对于上面的重复利用margin-top:-1来解决.(当然也可以利用margin-right:-1px;margin-bottom:-1px来实现)

主要用的是一句样式 position: relative 这句,没有这句的话,会出现问题.

jquery-demo-mouse

演示地址:http://runjs.cn/detail/ybhmpemt

开发jquery插件

jquery插件开发文档:http://www.tripfox.com.cn/node/64

以下为一简单的实例:

chajia.js:

(function($) {
//录入框点击事件
$.fn.alertWhileClick = function() {

$(this).click(function(){
window.console.log('execute click event');
alert($(this).val());
});

window.console.log('ok2');
}

//获取页面最大div的最大高度
$.fn.maxHeight = function(){
var max = 0;

this.each(function(){
window.console.log('a');
max = Math.max(max, $(this).height());
});
return max;
}
})(jQuery);

//插件用法
$(function(){

$('#login_username').alertWhileClick();

var tallest = $('div').maxHeight();
alert(tallest);
})

Ajax getjson 跨域通信 php+jquery

网站A的表单提交部分:

<script type="text/javascript" src="jquery-1.4.4.min.js" ></script>
<script type="text/javascript">

$("#myform").submit(function(){
var name = $("#name").val();
var phone = $("#phone").val();
$.getJSON("http://www.siteb.com/do.php?name=" + name + "&phone=" + phone + "&format=json&jsoncallback=?",
function(data){
if(data.status == 'ok'){
alert('操作成功!');
}else{
alert('操作失败!');
}
});
return false;
});
</script>

Continue reading

jquery中validate插件和form插件冲突的解决办法

如题:用jquery form提交表单,用jquery validate做数据验证 ,现在的问题是分别使用validate有作用,一起使用,则validate不起作用,谁遇到过帮忙解决下。

  1. <script type="text/javascript">
  2.   $(document).ready(function() {
  3.     $("#inputForm").validate({
  4.     ...
  5.          });
  6.   });
  7.   function onsubmit(){
  8.     var options ={
  9.        ...
  10.     };
  11.     $('#inputForm').ajaxSubmit(options); //options
  12.     return false;
  13.   }
  14. </script>

==================

补充一下,这个submitHandler:function(){}方法内可以写任何方法。但最后要有一个form.submit或form.ajaxSubmit
比如我这个

  1. $(document).ready(function(){
  2.             $("#loginForm").validate({
  3.                 rules: {
  4.                     shouJiHaoMa: {
  5.                         required: true,
  6.                         digits: true
  7.                     },
  8.                     pwd: {
  9.                         required: true
  10.                     }
  11.                 },
  12.                 messages: {
  13.                     shouJiHaoMa: {
  14.                         required: '请输入手机号码',
  15.                         digits: '请输入正确的手机号码'
  16.                     },
  17.                     pwd: {
  18.                         required: '请输入密码'
  19.                     }
  20.                 },
  21.                 // specifying a submitHandler prevents the default submit, good for the demo
  22.                 submitHandler: function() {
  23.                             login();
  24.                 return false;
  25.                 },
  26.                 errorElement: "em",
  27.                 success: function(label) {
  28.                 label.text(" ")             //清空错误提示消息
  29.                     .addClass("success");   //加上自定义的success类
  30.                 }
  31.             });

我的login()内最后提交了form

  1. login = function() {
  2.     $('#login_tmp').remove();
  3.     var options = {
  4.         type : "get",
  5.         dataType : "json",
  6.         url : "login.do",
  7.         data : {"method" : "ajaxLogin"},
  8.         cache : "false",
  9.         beforeSubmit : beforeCallBack,
  10.         success : loginCallBack,
  11.         error : errorCallBack
  12.     };
  13.     // 异步提交登陆请求
  14.     $("#loginForm").ajaxSubmit(options);
  15. }

参考:http://www.iteye.com/problems/35657

jQuery Datepicker 中文

以前在使用 js 日历时,没有使用过 jQuery Datepicker,今天第一次使用发现非常的好用。使用时需要将日历文字显示为中文,打开前边的链接在文章底部就可以看到将 jQuery Datepicker 文字显示为中文的方法,在http://jquery-ui.googlecode.com/svn/trunk/ui/i18n/可以看到各种版本的语言,中文文件内容如下: Continue reading

jQuery mouseover mouseout事件在IE下闪烁的解决方法

$("#category ul").find("li").each(
    function() {
        $(this).mouseover(
            function() {
                $("#" + this.id + "_menu").show();
                $(this).addClass("a");
            }
        );
        $(this).mouseout(
            function() {
                $(this).removeClass("a");
                $("#" + this.id + "_menu").hide();
            }
        );
    }
);

浏览器之间的不兼容一直令前端开发者的头疼,而 IE 更是噩梦。鼠标在下拉菜单移动时菜单会不断闪烁,说明不断触发了 mouseover 和 mouseout 事件。 Continue reading

jquery.validate remote 和 自定义验证方法

$(function(){

var validator = $("#enterRegForm").validate({
debug:false, //调试模式取消submit的默认提交功能
//errorClass: "error",//默认为错误的样式类为:error
//validClass: "check",//验证成功后的样式,默认字符串valid
focusInvalid: true,//表单提交时,焦点会指向第一个没有通过验证的域
//focusCleanup:true;//焦点指向错误域时,隐藏错误信息,不可与focusInvalid一起使用!
onkeyup: true,
errorElement: "div",
submitHandler: function(form){ //表单提交句柄,为一回调函数,带一个参数:form
form.submit(); //提交表单
},

rules: {
"enterprise.enName": {
required: true,
minlength: 6,
remote:{
url: "/nameServlet",     //后台处理程序
type: "get",               //数据发送方式
dataType: "json",           //接受数据格式
data: {                     //要传递的数据
enName: function() {
return $("#enName").val();
}
}

}
},

"user.passWord":{
required:true,
rangelength:[6,18]
},
passWordConf:{
required:true,
rangelength:[6,18],
equalTo:"#passWord" //此处的passWord 是<input id="passWord"> 一开始还以为是name的值呢,气死了
}

},

messages: { //自定义验证消息
"enterprise.enName": {
required: "请填写企业名称!",
minlength: $.format("至少要{0}个字符!"),
remote:$.format("该企业名称已存在!")

},
"user.passWord":{
required:"请填写确认密码!",
rangelength:$.format("密码要在{0}-{1}个字符之间!")
},
passWordConf:{
required:"请填写确认密码!",
rangelength:$.format("确认密码要在{0}-{1}个字符之间!"),
equalTo:"确认密码要和密码一致!"
},

errorPlacement: function(error, element) { //验证消息放置的地方
//error.appendTo( element.parent("td").next("td").children(".msg") );
error.appendTo( element.parent(".field").next("div"));
},
highlight: function(element, errorClass) { //针对验证的表单设置高亮
$(element).addClass(errorClass);
},
success: function(div) {
div.addClass("valid");
}
});

});

required除了设置为true/false之外,还可以使用表达式或者函数,比如
$("#form2").validate({
	rules: {
		funcvalidate: {
			required: function() {return $("#password").val()!=""; }
		}
	},
	messages: {
		funcvalidate: {
			required: "有密码的情况下必填"
		}
	}
});

Html
密码<input id="password" name="password" type="password" />
确认密码<input id="confirm_password" name="confirm_password" type="password" />
条件验证<input id="funcvalidate" name="funcvalidate" value="" />

 

自定义方法;

新建一个js文件:$(document).ready(function(){
// 字符最小长度验证(一个中文字符长度为2)
jQuery.validator.addMethod("stringMinLength", function(value, element, param) {
var length = value.length;
for ( var i = 0; i < value.length; i++) {
if (value.charCodeAt(i) > 127) {
length++;
}
}
return this.optional(element) || (length >= param);
}, $.validator.format("长度不能小于{0}!"));

// 字符最大长度验证(一个中文字符长度为2)
jQuery.validator.addMethod("stringMaxLength", function(value, element, param) {
var length = value.length;
for ( var i = 0; i < value.length; i++) {
if (value.charCodeAt(i) > 127) {
length++;
}
}
return this.optional(element) || (length <= param);
}, $.validator.format("长度不能大于{0}!"));

// 字符验证
jQuery.validator.addMethod("stringCheck", function(value, element) {
return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);
}, "只能包括中文字、英文字母、数字和下划线");

// 中文字两个字节
jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {
var length = value.length;
for(var i = 0; i < value.length; i++){
if(value.charCodeAt(i) > 127){
length++;
}
}
return this.optional(element) || ( length >= param[0] && length <= param[1] );
}, "请确保输入的值在3-15个字节之间(一个中文字算2个字节)");

// 字符验证
jQuery.validator.addMethod("string", function(value, element) {
return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);
}, "不允许包含特殊符号!");
// 必须以特定字符串开头验证
jQuery.validator.addMethod("begin", function(value, element, param) {
var begin = new RegExp("^" + param);
return this.optional(element) || (begin.test(value));
}, $.validator.format("必须以 {0} 开头!"));
// 验证两次输入值是否不相同
jQuery.validator.addMethod("notEqualTo", function(value, element, param) {
return value != $(param).val();
}, $.validator.format("两次输入不能相同!"));
// 验证值不允许与特定值等于
jQuery.validator.addMethod("notEqual", function(value, element, param) {
return value != param;
}, $.validator.format("输入值不允许为{0}!"));

// 验证值必须大于特定值(不能等于)
jQuery.validator.addMethod("gt", function(value, element, param) {
return value > param;
}, $.validator.format("输入值必须大于{0}!"));

// 验证值小数位数不能超过两位
jQuery.validator.addMethod("decimal", function(value, element) {
var decimal = /^-?\d+(\.\d{1,2})?$/;
return this.optional(element) || (decimal.test(value));
}, $.validator.format("小数位数不能超过两位!"));
//字母数字
jQuery.validator.addMethod("alnum", function(value, element) {
return this.optional(element) || /^[a-zA-Z0-9]+$/.test(value);
}, "只能包括英文字母和数字");
// 汉字
jQuery.validator.addMethod("chcharacter", function(value, element) {
var tel = /^[\u4e00-\u9fa5]+$/;
return this.optional(element) || (tel.test(value));
}, "请输入汉字");
// 身份证号码验证
jQuery.validator.addMethod("isIdCardNo", function(value, element) {
return this.optional(element) || /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/.test(value)||/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[A-Z])$/.test(value);
}, "请正确输入您的身份证号码");

// 手机号码验证
jQuery.validator.addMethod("isMobile", function(value, element) {
var length = value.length;
var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/;
return this.optional(element) || (length == 11 && mobile.test(value));
}, "请正确填写您的手机号码");

// 电话号码验证
jQuery.validator.addMethod("isTel", function(value, element) {
var tel = /^\d{3,4}-?\d{7,9}$/;    //电话号码格式010-12345678
return this.optional(element) || (tel.test(value));
}, "请正确填写您的电话号码");

// 联系电话(手机/电话皆可)验证
jQuery.validator.addMethod("isPhone", function(value,element) {
var length = value.length;
var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/;
var tel = /^\d{3,4}-?\d{7,9}$/;
return this.optional(element) || (tel.test(value) || mobile.test(value));

}, "请正确填写您的联系电话");

// 邮政编码验证
jQuery.validator.addMethod("isZipCode", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, "请正确填写您的邮政编码");

});

该文件要先被引用再对form进行验证。

注意:remote 中的url 为servlet,但是这个servlet该怎么写呢

一开始以为是跟平时的一样:out.println("用户名"+name+"已存在!");

虽然可以验证,但是还是存在问题:输入个不存在的name还是提示存在。

后来还是Google,看到别人也是犯了这样的错误,解决方法时返回true,false.

但是 doGet 是void类型的,return true 是行不通的。

后来又请教群里的高手,正确写法是out.println("true");就可以了。

哎,费了老长时间

总算是把问题给解决了。

自定义jquery validate 插件的默认提示语

法一:

一、默认校验规则
(1)required:true 必输字段
(2)remote:"check.php" 使用ajax方法调用check.php验证输入值
(3)email:true 必须输入正确格式的电子邮件
(4)url:true 必须输入正确格式的网址
(5)date:true 必须输入正确格式的日期
(6)dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性
(7)number:true 必须输入合法的数字(负数,小数)
(8)digits:true 必须输入整数
(9)creditcard: 必须输入合法的信用卡号
(10)equalTo:"#field" 输入值必须和#field相同
(11)accept: 输入拥有合法后缀名的字符串(上传文件的后缀)
(12)maxlength:5 输入长度最多是5的字符串(汉字算一个字符)
(13)minlength:10 输入长度最小是10的字符串(汉字算一个字符)
(14)rangelength:[5,10] 输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符)
(15)range:[5,10] 输入值必须介于 5 和 10 之间
(16)max:5 输入值不能大于5
(17)min:10 输入值不能小于10 Continue reading