相关知识
| 属性选择器 | |
|---|---|
| [attribute] | 选取包含指定属性的元素 |
| [attribute = value] | 选取属性为某个特定值value的元素 |
| [attribute != value] | 选取属性不为某个特定值value的元素 |
| jquery方法 | 参数 | 返回值 | 举例 |
|---|---|---|---|
| css | 1. 访问:attrName属性名 2.设置:key,value 属性名,属性值 properties 样式集合,键值对 attrName,function(index,oldValue) 使用函数返回值作为当前元素的属性值;index在集合中的索引,oldValue修改前的旧值 | 1. 第一个匹配元素的CSS样式 | $('font').css({fontSize: '16px', color: 'red'}); |
| val | 1. 访问: 空 2. 设置:newValue arrayValue多选表单元素的选中状态(check、select等) function(index,oldValue),将函数返回值作为元素内容 | 1. 匹配元素的值 | |
| index | 1. 访问:空 2. 设置:元素或选择器 | 1. 指定元素相对于其他指定元素的索引值 2. 指定元素数组中索引为index的对象 | |
| on | types[,data],fn types:一个或多个事件类型click,blur,focus等 data传递给函数的额外数据,通过event.data获取 fn事件处理函数 | $('.btn).on('click',function(){...}) | |
| submit | 1. 空 2. 当发生 submit 事件时运行的函数 | $("form").submit(function(e){ e.preventDefault();} 阻止表单提交 |
$(...).on('click') 适用于当前及未来的元素(比如由脚本创建的新元素)
- 其他参数:foucs获取焦点、blur失去焦点、submit提交表单等
$(...).click 仅包含页面加载完毕时的元素
效果
商品缩略图:点击“选择文件”按钮,可选取本地待上传的图片
商品名称: 点击文本框,背景、边框变色;失焦恢复
商品类别:默认选择第一项
商品单价:点击文本框,字体颜色、大小变化;失焦恢复;填写小于0的数值时,弹出警告框,清空数值,并选中文本框
团购价:同“商品单价”
商品数量:填写小于0的数值时,弹出警告框,清空数值,并选中文本框
发布日期: 选择年月日
是否审核:默认选择第一项
商品描述:无限制
“马上发布”按钮:点击后分别判断——是否上传商品缩略图,是否填写商品名称,是否填写商品描述。确认填写完毕后,提交表单
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery表格</title>
<link rel="stylesheet" href="../css/jquery-form.css">
<script type="text/javascript" src="../js/jquery-3.7.1.js"></script>
</head>
<body>
<!-- 导航栏 -->
<div class="place">
<span>位置:</span>
<ul class="placeul">
<li><a href="#">首页</a></li>
<li>></li>
<li><a href="#">添加商品</a></li>
</ul>
</div>
<div class="formbody">
<form action="#" id="addgoodsForm" method="post">
<ul class="forminfo">
<li>
<label for="thumbImg">商品缩略图<b> * </b></label>
<input type="file" name="thumbImg" id="thumbImg" multiple="multiple" accept="image/*"/>
</li>
<li>
<label for="goodsName">商品名称<b> * </b></label>
<input type="text" name="goodsName" id="goodsName" value="请填写商品名称" required="required">
</li>
<li>
<label for="goodsType">商品类别<b> * </b></label>
<select name="goodsType" class="goodsType">
<option value="male">男装</option>
<option value="female">女装</option>
<option value="children">童装</option>
<option value="sport">运动</option>
<option value="other">其他</option>
</select>
</li>
<li>
<label for="unitPrice">商品单价<b> * </b></label>
<input type="number" name="unitPrice" id="unitPrice" required="required"> 元
</li>
<li>
<label for="groupPrice">团购价<b> * </b></label>
<input type="number" name="groupPrice" id="groupPrice" required="required"> 元
</li>
<li>
<label for="goodsAmount">商品数量<b> * </b></label>
<input type="number" name="goodsAmount" id="goodsAmount" required="required"> 件
</li>
<li>
<label for="publishDate">发布日期<b> * </b></label>
<input type="date" name="publishDate" id="publishDate" required="required">
</li>
<li>
<label for="isChecked">是否审核<b> * </b></label>
<select name="isChecked" id="isChecked">
<option value="yes">已审核</option>
<option value="no">未审核</option>
</select>
</li>
<li>
<label for="goodsDescription" id="label-gdsdesc">商品描述<b> * </b></label>
<textarea name="goodsDescription" id="goodsDescription" rows="3" col="30"></textarea>
</li>
<li>
<label></label>
<input type="submit" class="btn" id="submit-btn" value="马上发布">
</li>
</ul>
</form>
</div>
<script type="text/javascript" src="../js/jquery-form.js"></script>
</body>
</html>
*{
margin: 0;
padding: 0;
}
a{
text-decoration: none;
color: inherit;
}
ul{
list-style: none;
}
.place{
background-color: #eeeeee;
height: 30px;
padding: 10px 0;
}
.place>span{
margin-left: 45px;
float: left;
}
.placeul{
float: left;
}
.placeul>li{
float: left;
padding: 0 5px;
}
.formbody{
clear: both;
margin: 10px 30px;
}
#addgoodsForm ul>li{
margin: 15px;
}
#thumbImg{
margin-left: 15px;
}
#goodsName{
margin-left: 30px;
height: 20px;
}
.goodsType{
margin-left: 29px;
}
#unitPrice{
margin-left: 28px;
}
#groupPrice{
margin-left: 44px;
}
#goodsAmount{
margin-left: 28px;
}
#publishDate{
margin-left: 28px;
}
#isChecked{
margin-left: 28px;
}
#goodsDescription{
margin-left: 32px;
width: 190px;
resize: none;
}
#label-gdsdesc{
float: left;
}
.btn{
margin-left: 109px;
padding:10px 30px;
background-color: rgb(76, 139, 240);
border: 1px solid;
border-radius: 4px;
color: white;
}
// 商品名称——获得焦点、失去焦点
$("#goodsName").on('focus',function(){
$(this).css({
backgroundColor:'#ffeeff',
borderColor:'#999'
});
if ($(this).val() == "请填写商品名称")
$(this).val("");
}).on('blur',function(){
$(this).css({
backgroundColor:'#fff',
borderColor:''
})
if ($(this).val() == "")
$(this).val("请填写商品名称");
})
// 价格文本框——获得焦点、失去焦点
$("input[id $= 'Price']").on('focus',function(){
$(this).css({
fontSize: '16px',
color: 'red'
});
}).on('blur',function(){
$(this).css({
fontSize: '12px',
color: 'black'
})
})
// 数字文本框(属性选择器)
$("input[type = 'number']").on('blur',function(){
if ($(this).val() < 0){
switch ($(this).index()){
case 0:
alert("商品单价不能小于0!");
break;
case 1:
alert("团购价不能小于0!");
break;
case 2:
alert("商品数量不能小于0!");
break;
}
$(this).val("");
$(this).select(); // 选中
}
})
// 判断日期格式(表单属性type已经设置为date,该方法无使用)
$("input[type = 'date]").on('blur',function(){
// 日期格式:yyyy-MM-dd 或 yyyy/MM/dd (正则表达式)
/*
/ ... / 正则表达式外部
\d 数字
\d{4} 4个数字
[ ... ] 匹配字符
-\/ '='或者'/' \表示转义
\d{1,2} 有1~2个数字
*/
var dataReg = /(\d{4})[-\/](\d{1,2})[-\/](\d{1,2})/;
if (!dataReg.test( $(this).val() )){
alert("日期格式不正确,请输入yyyy-MM-dd 或 yyyy/MM/dd格式的日期");
$(this).select();
}
})
// 发布(返回值:boolean,表示是否发布成功)
$("input[type = 'submit']").on('click',function(){
if ($("#thumbImg").val() == ""){
alert("请选择商品缩略图!");
return false;
}
if ($("#goodsName").val() == "" || $("#goodsName").val() == "请填写商品名称"){
alert("请填写商品名称!");
return false;
}
if ($("#goodsDescription").val() == ""){
alert("请完善商品详细信息!");
return false;
}
// 提交表单
$(".formbody form").submit();
})