我已经使用javascript在特定页面加载时添加了这个。
document.getElementById('commit').addEventListener("click", validateSubmit,
false);
这个validateSubmit方法有一些代码可以验证表单数据和 它会这样做
function validateSubmit(){
//some code
window.addEventListener('submit', newsubmit, true);
HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
HTMLFormElement.prototype.submit = newsubmit;
}
function newsubmit(event) {
var target = event ? event.target : this;
event.preventDefault();
return false;
}
所以这是第一次提交表单时通过单击它进入此方法并且它阻止表单值提交并在修复那些值后我再次尝试单击提交按钮然后它不起作用,在控制台中我收到此错误 -
"Uncaught TypeError: Cannot call method 'preventDefault' of undefined"
请帮帮我... 提前谢谢..
答案 0 :(得分:1)
尝试从
更改功能声明function newsubmit(event) {
到
var newsubmit = function(event) {
如果要将函数用作事件侦听器的参数,则必须将该函数声明为变量。
答案 1 :(得分:0)
我认为你不需要经历这样的痛苦来阻止用户提交不完整的表格。试试这个:
<form name="form1" id="form1" onsubmit="return validateForm()" ....>
<input type="text" id="txtName" />
</form>
function validateForm()
{
//CHECK IF FORM FIELDS CONTAIN VALID VALUES?
var formValid=....;//validation logic
return formValid;
}
现在,如果在验证过程中发现任何错误,您会将formValid
变量设置为false
,否则如果所有输入都正确,则将formValid
设置为true. When form will get
false as return value from
validateForm`函数不会提交。
答案 2 :(得分:0)
试试这个:
function validateSubmit(){
window.addEventListener('submit', newsubmit, true);
HTMLFormElement.prototype.submit = newsubmit;
HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
}
function newsubmit(event) {
var target = event ? event.target : this;
event.preventDefault();
return false;
}