![](/img/trans.png)
[英]Jquery closest function with class not alerting in javascript code become undefined value
[英]Jquery getting undefined value of the closest class
我正在尝试比较一对日期时间值进行验证。 我创建了一个动态表单,每次用户点击“添加会话”按钮时都会使用它。 将附加会话表单 div。 例如,我正在尝试添加 2 个会话并使用以下代码验证 2 对会话日期时间值。
$('.startdatetime').each(function(){
console.log($(this).val());
console.log($(this).closest('.datetime-div').next().find('.enddatetime').val());
if($(this).val() === "" || $(this).val() === null ){
$(this).closest('.startdatetime-input').after("<p class='error-message font-bold col-pink'>Start Date Time is required.<p>");
hasErr = true;
}else if(moment($(this).val()).isSameOrAfter($(this).closest('.datetime-div').next().find('.enddatetime').val(), 'minute')){ //validate start datetime < end datetime
$(this).closest('.startdatetime-input').after("<p class='error-message font-bold col-pink'>Invalid Date Time.<p>");
hasErr = true;
}
});
我在使用 console.log 调试的第一个循环中得到第一个会话结束日期时间的未定义值。
下面的代码显示了我的 html 片段。
<div class="row">
<div class="datetime-div col-md-6 col-xs-12 col-sm-12">
<div class="form-group">
<div class="form-line startdatetime-input">
<label>Start Date Time</label>
<input type="text" class="datetimepicker form-control startdatetime" placeholder="Please choose date & time...">
</div>
</div>
</div>
<div class="datetime-div col-md-6 col-xs-12 col-sm-12">
<div class="form-group">
<div class="form-line enddatetime-input">
<label>End Date Time</label>
<input type="text" class="datetimepicker form-control enddatetime" placeholder="Please choose date & time...">
</div>
</div>
</div>
</div>
$('.startdatetime').each(function() { console.log($(this).val()); console.log($(this).closest('.datetime-div').next().find('.enddatetime').val()); if ($(this).val() === "" || $(this).val() === null) { $(this).closest('.startdatetime-input').after("<p class='error-message font-bold col-pink'>Start Date Time is required.<p>"); hasErr = true; } else if (moment($(this).val()).isSameOrAfter($(this).closest('.datetime-div').next().find('.enddatetime').val(), 'minute')) { //validate start datetime < end datetime $(this).closest('.startdatetime-input').after("<p class='error-message font-bold col-pink'>Invalid Date Time.<p>"); hasErr = true; } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="row"> <div class="datetime-div col-md-6 col-xs-12 col-sm-12"> <div class="form-group"> <div class="form-line startdatetime-input"> <label>Start Date Time</label> <input type="text" class="datetimepicker form-control startdatetime" placeholder="Please choose date & time..."> </div> </div> </div> <div class="datetime-div col-md-6 col-xs-12 col-sm-12"> <div class="form-group"> <div class="form-line enddatetime-input"> <label>End Date Time</label> <input type="text" class="datetimepicker form-control enddatetime" placeholder="Please choose date & time..."> </div> </div> </div> </div>
知道使用最合适的 jQuery 选择器获取最接近的 enddatetime 值吗?
在您的代码中一切看起来都很好。 您没有得到undefined
,而是得到一个空值,因为两个输入都是空的。 如果您填写属性value
,您将在控制台中打印这些值,运行我共享的代码片段并检查。 我的更改在 html input
元素中。 因此,似乎您应该在用户填写输入后运行您共享的 javascript,而不是像您共享的代码片段那样。
$('.startdatetime').each(function() { console.log($(this).val()); console.log($(this).closest('.datetime-div').next().find('.enddatetime').val()); if ($(this).val() === "" || $(this).val() === null) { $(this).closest('.startdatetime-input').after("<p class='error-message font-bold col-pink'>Start Date Time is required.<p>"); hasErr = true; } else if (moment($(this).val()).isSameOrAfter($(this).closest('.datetime-div').next().find('.enddatetime').val(), 'minute')) { //validate start datetime < end datetime $(this).closest('.startdatetime-input').after("<p class='error-message font-bold col-pink'>Invalid Date Time.<p>"); hasErr = true; } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="row"> <div class="datetime-div col-md-6 col-xs-12 col-sm-12"> <div class="form-group"> <div class="form-line startdatetime-input"> <label>Start Date Time</label> <input type="text" value="valueForStartDateTime" class="datetimepicker form-control startdatetime" placeholder="Please choose date & time..."> </div> </div> </div> <div class="datetime-div col-md-6 col-xs-12 col-sm-12"> <div class="form-group"> <div class="form-line enddatetime-input"> <label>End Date Time</label> <input type="text" value="valueForEndDateTime" class="datetimepicker form-control enddatetime" placeholder="Please choose date & time..."> </div> </div> </div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.