jquery - JQuery - on() Keyup Validation 不起作用
问题描述
在 Laravel-5.8 应用程序中,我使用 JQuery on()
keyup 函数来验证一些计算,如下所示:
< script type = "text/javascript" >
$(document).ready(function() {
// **Treat like global variable**
var myRatingLimit, myWeightedScore;
$('.modal_add_comment').on('show.bs.modal', function(e) {
var $this = $(e.relatedTarget);
var data_id = $this.data('id');
var modal = $this;
var parentTr = $this.closest('tr');
// **Reuse the vars instead of re-declaring them**
myRatingLimit = parentTr.find('.myRatingLimit').text();
myWeightedScore = parentTr.find('.myWeightedScore').text();
// directly use .val() instead of .attr()
var newRating = modal.find('.InputRatingLimit').val(myRatingLimit);
var newScore = modal.find('.InputWeightedScore').val(myWeightedScore);
var newScore1 = $(".InputWeightedScore").val();
var newRating1 = $(".InputRatingLimit").val();
});
$(".myRating").on('keyup blur', function(e) {
var main = myWeightedScore;
var perc = myRatingLimit;
main = main ? parseInt(main) : 0;
perc = perc ? parseInt(perc) : 0;
let sumWeightBalance = parseInt(main);
let sumPercBalance = parseInt(perc);
var percVal = (sumPercBalance / 100).toFixed(2);
var mult = main * percVal;
var percResult = main + mult;
// **You will get NaN error when parsing empty value**
// **Thus use a empty check and NaN check before**
const myRating = $(".myRating").val();
let sumValue = myRating.length === 0 || isNaN(myRating) ? 0 : parseInt(myRating);
console.log(`sumValue is ${sumValue}`);
if (sumValue > percResult) {
Swal('Oops...', 'Self Rating is greater than Rating Limit!', 'error')
$(".myRating").val('');
return false;
}
});
}); <
/script> <
script type = "text/javascript" >
function allowNumbersOnly(e) {
var code = (e.which) ? e.which : e.keyCode;
if (code > 31 && (code < 48 || code > 57)) {
e.preventDefault();
}
}; <
/script>
<div id="modal_add_comment_{{ $goal->id }}" class="modal fade modal_add_comment" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<form action="{{route('appraisal.appraisal_year_end_setups.employee_year_end_comment',['id'=>$goal->id])}}" method="post" enctype="multipart/form-data" class="review_comment-form">
{{ csrf_field() }}
<div class="modal-header">
Self-Review Comment
</div>
<div class="col-md-12">
<div class="form-group">
<label class="control-label"> Rating:<span style="color:red;">*</span></label>
<input type="hidden" name="InputRatingLimit" class="InputRatingLimit">
<input type="hidden" name="InputWeightedScore" class="InputWeightedScore">
<input type="text" name="employee_year_end_weighted_score" class="form-control myRating" placeholder="Enter Rating here e.g. 10" oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" style="width: 100%;"
maxlength="4" required/>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default close-modal-create" data-dismiss="modal">Cancel
</button>
<button type="submit" id="review_comment_btn-submit" class="btn btn-success btn-ok">Save</button>
</div>
</form>
</div>
</div>
</div>
当模态表单显示时,我希望.myRating
使用keyup
if (sumValue > percResult) {
但是无论我输入什么class="form-control myRating"
,即employee_year_end_weighted_score,在keyup 上console.log(sumValue);
都会给出0。
所以验证没有完成。
我该如何解决这个问题?
解决方案
推荐阅读
- php - 检查是否匹配 url 参数是否正确并显示数据
- ruby - RSpec,Appium:从 CLI 提供所需的功能
- javascript - 提取时间比平时长
- flutter - 如何在 SearchDelegate 中自定义 appbar 样式
- android - 使用android从github api获取数据时输出空
- java - 在 java 库中添加 servlet
- python - 对 db 进行更改时,Django 3.0.3 IntegrityError FOREIGN KEY 约束失败
- c++ - Arduino,去抖电压时间延迟代码中的运行时间代码错误
- java - 每次切换活动时dubbel json输出
- python - 重定向到其他时的 Django 会话问题