1.检查input是否为空
function check() {
// $.trim()方法:去掉字符串中的前后空格
var value = $.trim($("选择器").val())
if(value == '') {
alert("用户名不能为空");
return false;
}
return true;
}
实例:
$(function(){
$("submitBtn").click(function(){
var flag = true;
$(".input1").each(function(){
if($.trim($(this).val()) == ''){
alert("输入不能为空!");
flag = false;
return false;
}
})
if(flag == true){
alert("添加成功");
}
})
})
该技巧通常使用在表单验证中。submitBtn是表单中的sumbit类型。如果返回值是false,那么将会阻止该表单提交内容。
注意:即使阻止表单的内容提交,但是在ssm框架中,表单还会action到指定url中,此时因表单内容为空,可能会引起数据库操作错误(错误码:500)。解决方法:在Controller中添加逻辑验证。如下:
如果传入的参数合法,那么返回成功操作逻辑(这里没有返回zhi);
Q1:为什么要用if flag == true,而不是直接使用如下代码?
alert("添加成功");
return true;
因为JQuery中的each遍历中,并没有break、continue方法。如果想跳出循环或continue,只能以return false、return true代替。但return false是跳出整个each循环,return true仅仅是跳出本次循环。如果使用上述代码,一旦添加成功,就会出现好多次alert("添加成功");
所以,用一个flag,可以实现类似break的操作。
但是有缺点:因为不管怎么样,都会提交给action,所以即使输入不合法,也会向服务器请求一次,会造成服务器资源不必要的浪费。解决方法:使用form的onsubmit属性。同时也要使用flag标记,返回函数值(false true)。如下:
这样一来,表单验证就会在客户端本地进行验证,而不用提交到服务器进行验证。如果逻辑正确,假设用户输入不正确并点击提交,那么会弹出alert窗口;同时用户填入的信息并不会消失。如下:
需要注意:于客户端上检验合法性时,仅适用于一些没有风险的检验,否则请交给服务端检验(validation jar包)。
2. 获得容器的属性
$("选择器").attr("属性名");
实例:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<script src="jquery.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<input type="text" class="name1" id="ipt1" value="test1"/>
<input type="text" class="name1" id="ipt2" value="test2"/>
<input type="button" id="btn1" value="提交"/>
<script>
$(function(){
$("#btn1").click(function(){
$(".name1").each(function(){
if($(this).val()=="123"){
alert($(this).attr("id"))
}
})
})
})
</script>
</body>
</html>
如果input内为123,则弹出该input的id值。
有时候可用于:form表单中有多个submit,想要给每个submit赋予不同的action,那么就可以使用attr()方法修改action属性。如下: