gpt4 book ai didi

javascript - jQuery 如何在输入字段为空时禁用点击功能

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:57 24 4
gpt4 key购买 nike

И 有一些步骤卡,其中有输入字段。对于每张卡片,我都有一个“下一步” 按钮来改变 View 。

但如果表单中有空输入字段,我想阻止此按钮。

代码:

var $currentCard, $nextCard, $prevCard;

var animationEvents = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
var operationName = ["Order number", "Oparation barcode", "Nest number", "Layers number", "Cycles number"];

$('.next').on('click', function (e) {
e.preventDefault();
$currentCard = $(this).parent().parent();
$nextCard = $currentCard.next();


$('#bar li').eq($('.card').index($nextCard)).addClass('active');
var inAnimation = 'animated slideInLeft';

$currentCard.hide();

$nextCard
.show()
.addClass(inAnimation)
.one(animationEvents, function () {
$(this).removeClass(inAnimation);
});
});

$('.prev').on('click', function (e) {
e.preventDefault();
$currentCard = $(this).parent().parent();
$prevCard = $currentCard.prev();

$('#bar li').eq($('.card').index($currentCard)).removeClass('active');

var inAnimation = 'animated slideInRight';
$currentCard.hide();

$prevCard
.show()
.addClass(inAnimation)
.one(animationEvents, function () {
$(this).removeClass(inAnimation);
});
});
.title {
margin-bottom: 30px;
color: #020304;
}

.card {
max-width: 500px;
width: 90%;
background: white;
margin: 50px ;
padding: 20px 30px;
border-radius: 2px;
-webkit-animation-duration: 0.2s;
animation-duration: 0.2s;
}

.cardTitle {
text-align: center;
text-transform: uppercase;
margin: 0;
}

.cardText {
margin: 25px 0 40px 0;
color: grey;
text-align:center;
}

.card:not(:first-of-type) {
display: none;
}

.actions {
text-align: center;
}

.btn {
width: 200px;
background: #ffd42a;
font-weight: bold;
font-size: 14px;
color: #000;
display: inline-block;
text-decoration: none;
text-align: center;
border-radius: 2px;
padding: 10px 5px;
margin: 10px 5px;
}

.btn:hover {
box-shadow: 0 0 0 2px white, 0 0 0 3px #27AE60;
}

.barContainer {
width: 100%;
text-align: center;
}

.bar {
counter-reset: step;
margin: 0;
}

.bar li {
list-style-type: none;
float: left;
width: 20%;
position: relative;
text-align: center;
font-size: 9px;
color: white;
}

@media all and (min-width: 500px) {
.bar li {
text-transform: uppercase;
font-size: 10px;
}
}

.bar li:before {
content: counter(step);
counter-increment: step;
width: 30px;
height: 30px;
line-height: 30px;
font-size: 14px;
border: 1px solid #ddd;
display: block;
text-align: center;
margin: 0 auto 10px auto;
border-radius: 50%;
background-color: white;
color: #333;
}

.bar li:after {
content: '';
position: absolute;
width: 100%;
height: 2px;
background: #ffed2b;
top: 15px;
left: -50%;
z-index: -1;
}

.bar li:first-child:after {
content: none;
}

.bar li.active:before {
background: #ffd42a;
border: 1px solid #ffd42a;
color: #000;
}

.bar li.active + li.active:after {
background: #27AE60;
}

.bar li.active:first-child + li:after:not(.active) {
background: white;
}

.input-style {
margin: 20px auto;
width: 86%;
height: 40px;
position: relative;
border-bottom: 1px solid #ccc;
text-align: center;
}

.input-style input {
width: 86%;
height: 100%;
padding: 0px 10px;
border: none;
font-size: 22px;
text-align:center;
outline: 0;
}
  

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<ul class="bar" id="bar">
<li class="active">Register new PO</li>
<li>Scan PO barcode</li>
<li>Scan Operation barcode</li>
</ul>
</div>
<section id="cards">
<div class="card">
<h3 class="cardTitle">Register new PO</h3>
<p class="cardText">Some description</p>
<div class="actions">
<a href="#" class="btn next startCO">Register new PO</a>
</div>
</div>
<div class="card" id="CoStep1">
<h3 class="cardTitle">Scan PO barcode</h3>
<p class="cardText">Some description</p>
<div class="input-style">
<input type="text" placeholder="PO barcode">
<div class="style"></div>
</div>
<div class="actions">
<a href="#" class="btn prev">Prev</a>
<a href="#" class="btn next coButton">Next</a>
</div>
</div>
<div class="card" id="CoStep2">
<h3 class="cardTitle">Scan Operation barcode</h3>
<p class="cardText">Some description</p>
<div class="input-style">
<input type="text" placeholder="Operation barcode"> <button class="plusButton">+</button>
<div class="style"></div>
</div>
<div class="actions">
<a href="#" class="btn prev">Prev</a>
<a href="#" class="btn next coButton startCO">Start CO</a>
</div>
</div>
</section>

如您所见,我有一个功能来检查某些输入字段是否为空,当我按下 Next 时,它会转到下一页。

我需要的是在继续之前按下一步按钮验证输入字段是否已填写。

最佳答案

我添加了这段 jQuery 代码:

if($('.POBarcode').is(":visible")){
if($('.POBarcode').val().length == 0) return false;
}
if($('.Operation_barcode').is(":visible")){
if($('.Operation_barcode').val().length == 0) return false;
}

我还向以下元素添加了一个

<input type="text" class="POBarcode" placeholder="PO barcode">
<input type="text" placeholder="Operation barcode" class="Operation_barcode">

现在,在 可见input 具有 value 之前,您无法按下一个按钮。

工作演示

var $currentCard, $nextCard, $prevCard;

var animationEvents = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
var operationName = ["Order number", "Oparation barcode", "Nest number", "Layers number", "Cycles number"];

$('.next').on('click', function(e) {
e.preventDefault();

if($('.POBarcode').is(":visible")){
if($('.POBarcode').val().length == 0) return false;
}
if($('.Operation_barcode').is(":visible")){
if($('.Operation_barcode').val().length == 0) return false;
}

$currentCard = $(this).parent().parent();
$nextCard = $currentCard.next();

$('#bar li').eq($('.card').index($nextCard)).addClass('active');
var inAnimation = 'animated slideInLeft';

$currentCard.hide();

$nextCard
.show()
.addClass(inAnimation)
.one(animationEvents, function() {
$(this).removeClass(inAnimation);
});
});

$('.prev').on('click', function(e) {
e.preventDefault();
$currentCard = $(this).parent().parent();
$prevCard = $currentCard.prev();

$('#bar li').eq($('.card').index($currentCard)).removeClass('active');

var inAnimation = 'animated slideInRight';
$currentCard.hide();

$prevCard
.show()
.addClass(inAnimation)
.one(animationEvents, function() {
$(this).removeClass(inAnimation);
});
});
.title {
margin-bottom: 30px;
color: #020304;
}

.card {
max-width: 500px;
width: 90%;
background: white;
margin: 50px;
padding: 20px 30px;
border-radius: 2px;
-webkit-animation-duration: 0.2s;
animation-duration: 0.2s;
}

.cardTitle {
text-align: center;
text-transform: uppercase;
margin: 0;
}

.cardText {
margin: 25px 0 40px 0;
color: grey;
text-align: center;
}

.card:not(:first-of-type) {
display: none;
}

.actions {
text-align: center;
}

.btn {
width: 200px;
background: #ffd42a;
font-weight: bold;
font-size: 14px;
color: #000;
display: inline-block;
text-decoration: none;
text-align: center;
border-radius: 2px;
padding: 10px 5px;
margin: 10px 5px;
}

.btn:hover {
box-shadow: 0 0 0 2px white, 0 0 0 3px #27AE60;
}

.barContainer {
width: 100%;
text-align: center;
}

.bar {
counter-reset: step;
margin: 0;
}

.bar li {
list-style-type: none;
float: left;
width: 20%;
position: relative;
text-align: center;
font-size: 9px;
color: white;
}

@media all and (min-width: 500px) {
.bar li {
text-transform: uppercase;
font-size: 10px;
}
}

.bar li:before {
content: counter(step);
counter-increment: step;
width: 30px;
height: 30px;
line-height: 30px;
font-size: 14px;
border: 1px solid #ddd;
display: block;
text-align: center;
margin: 0 auto 10px auto;
border-radius: 50%;
background-color: white;
color: #333;
}

.bar li:after {
content: '';
position: absolute;
width: 100%;
height: 2px;
background: #ffed2b;
top: 15px;
left: -50%;
z-index: -1;
}

.bar li:first-child:after {
content: none;
}

.bar li.active:before {
background: #ffd42a;
border: 1px solid #ffd42a;
color: #000;
}

.bar li.active+li.active:after {
background: #27AE60;
}

.bar li.active:first-child+li:after:not(.active) {
background: white;
}

.input-style {
margin: 20px auto;
width: 86%;
height: 40px;
position: relative;
border-bottom: 1px solid #ccc;
text-align: center;
}

.input-style input {
width: 86%;
height: 100%;
padding: 0px 10px;
border: none;
font-size: 22px;
text-align: center;
outline: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<ul class="bar" id="bar">
<li class="active">Register new PO</li>
<li>Scan PO barcode</li>
<li>Scan Operation barcode</li>
</ul>
</div>
<section id="cards">
<div class="card">
<h3 class="cardTitle">Register new PO</h3>
<p class="cardText">Some description</p>
<div class="actions">
<a href="#" class="btn next startCO">Register new PO</a>
</div>
</div>
<div class="card" id="CoStep1">
<h3 class="cardTitle">Scan PO barcode</h3>
<p class="cardText">Some description</p>
<div class="input-style">
<input type="text" class="POBarcode" placeholder="PO barcode">
<div class="style"></div>
</div>
<div class="actions">
<a href="#" class="btn prev">Prev</a>
<a href="#" class="btn next coButton">Next</a>
</div>
</div>
<div class="card" id="CoStep2">
<h3 class="cardTitle">Scan Operation barcode</h3>
<p class="cardText">Some description</p>
<div class="input-style">
<input type="text" placeholder="Operation barcode" class="Operation_barcode"> <button class="plusButton">+</button>
<div class="style"></div>
</div>
<div class="actions">
<a href="#" class="btn prev">Prev</a>
<a href="#" class="btn next coButton startCO">Start CO</a>
</div>
</div>
</section>

关于javascript - jQuery 如何在输入字段为空时禁用点击功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56162156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com