我有3个输入框。当用户在其中输入任何值时,我想调用函数以突出显示框。通过使用keyup函数,我可以实现它,但它还会触发其下一个输入元素的keyup函数。下面是我的代码
工作演示- https://www.w3schools.com/code/tryit.asp?filename=G38SF7O5Q7MQ
<div>
<input type="text" class="cDate" />
<input type="text" class="cMonth" />
<input type="text" class="cYear" />
</div>
<div class="error-msg"></div>
<script>
$(document).ready(function(){
$('.cDate').on('keyup blur change', function(){
$(this).next().trigger('focus');
highlightInputs(this)
});
$('.cMonth').on('keyup blur change', function(){
$(this).next().trigger('focus');
highlightInputs(this)
});
$('.cYear').on('keyup blur change', function(){
$(this).trigger('focusout');
highlightInputs(this)
});
});
function highlightInputs(_inputs) {
$(_inputs).each(function(){
if($(this).val() == ''){
$(this).addClass('error');
$('.error-msg').text('Please enter valid date');
$('.error-msg').show();
}
else{
$(this).removeClass('error');
$('.error-msg').text('Please enter valid date');
$('.error-msg').hide();
}
});
}
</script>
答案 0 :(得分:0)
对我有用。我只是将您的代码复制到以下代码段中:
$(document).ready(function() {
$('.cDate').on('keyup blur change', function() {
$(this).next().trigger('focus');
highlightInputs(this)
});
$('.cMonth').on('keyup blur change', function() {
$(this).next().trigger('focus');
highlightInputs(this)
});
$('.cYear').on('keyup blur change', function() {
$(this).trigger('focusout');
highlightInputs(this)
});
$("input").on('keydown', function(e) {
var code = e.keyCode ? e.keyCode : e.which;
if (code == 9) {
e.preventDefault();
e.stopPropagation();
}
});
});
function highlightInputs(_inputs) {
$(_inputs).each(function() {
if ($(this).val() == '') {
$(this).addClass('error');
$('.error-msg').text('Please enter valid date');
$('.error-msg').show();
} else {
$(this).removeClass('error');
$('.error-msg').text('Please enter valid date');
$('.error-msg').hide();
}
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<input type="text" class="cDate" />
<input type="text" class="cMonth" />
<input type="text" class="cYear" />
</div>
<div class="error-msg"></div>