【发布时间】:2020-02-18 14:40:08
【问题描述】:
我的页面上有这个脚本:
<script type='text/javascript'>
$(document).ready(function() {
$('#TotalHours').attr('name', 'TotalHours'); // jQuery validation requires field names to be set
$.validator.addMethod("hours", function(value, element) {
var totalHours = 0;
$('select').each(function(i, sel) {
var hours = $(sel).find(":selected").text();
if (hours != "")
totalHours += parseFloat(hours);
});
var reportedTotalHours = parseFloat($("#TotalHours").text());
var difference = abs(totalHours - reportedTotalHours);
return difference >= 0.25; // discrepancy must be less than a quarter hour
});
$('form').bind('submit', function() {
$("#TheForm").validate({
rules: {
TotalHours: {
hours: true
}
}
});
});
});
</script>
前几天我让它工作了但是现在提交表单时它没有经过验证(如果我在绑定到submit的函数内设置断点,它永远不会被击中)......我能做什么坏了吗?
编辑:这是提交按钮的处理程序,以防万一:
<script type='text/javascript'>
function __E374_onclick(){
try{$("#TheForm").validate();
if(!$("#TheForm").valid()){alert('The data you have entered is not valid. Please complete all required fields and correct any data entry errors.'); return;}
var pm=$("#TheForm").serialize();$.post("/Action/Do/", pm, function(d){
switch(true){
case (null==d):dm("The server returned an unexpected response.");break;
case (!d.Valid):case (!d.Successful):dm(d.Message);break;
case (d.Successful):dm(d.Message);fu("EditAssessment");break;
default:dm("An unexpected condition occurred.");break;}});
}catch(e){}}
</script>
以及提交按钮本身:
<input type='button' id="__E374" class="button" value="Save" onclick="__E374_onclick();"/>
【问题讨论】:
-
标记中的 ID 已更改?不,您只绑定到“表单”,所以不是那样。我假设 jQuery 已加载?提交时控制台中有什么?
-
我提交时控制台中有什么?不知道你的意思...
-
.bind()has been deprecated 有一段时间了,那么你使用的是什么版本的 jQuery?您不应该将.validate()方法放在submit处理程序中 - 只需参考在 SO 上标记为 jQuery Validate 的 6000 个工作示例之一。其次,相关和渲染的 HTML 在哪里,我们可以自己尝试一下? -
我正在使用 jQuery v1.11.2,看起来像。我无法获取 HTML 源代码,因为它是动态生成的,因此它不会出现在我的浏览器的查看源代码中。
-
浏览器 DOM 是动态更新的,因此您可以在开发人员的工具中查看呈现的 HTML,而不是页面源代码。也许谷歌如何使用开发者的控制台进行故障排除和检查。
标签: javascript jquery jquery-validate