Javascript 当我添加一行时无法阻止表单提交
我累坏了。我的代码无法阻止提交的删除操作。在我添加Javascript 当我添加一行时无法阻止表单提交,javascript,jquery,forms,Javascript,Jquery,Forms,我累坏了。我的代码无法阻止提交的删除操作。在我添加This.doSomething()之前,它一直运行良好 为什么会发生这种情况?我必须使用默认值吗 工作代码: HTML: 感谢阅读:)在您的submit回调函数中,这个不再指向您的对象,而是指向元素本身 因此,它导致异常,因为元素没有doSomething属性,并且您的返回false被跳过 相反,写下以下内容: ReserveUI.prototype._eventify = function() { var self = this;
This.doSomething()之前,它一直运行良好代码>
为什么会发生这种情况?我必须使用默认值吗
工作代码:
HTML:
感谢阅读:)在您的submit
回调函数中,这个不再指向您的对象,而是指向元素本身
因此,它导致异常,因为元素没有doSomething
属性,并且您的返回false
被跳过
相反,写下以下内容:
ReserveUI.prototype._eventify = function() {
var self = this;
this.$form.input.submit(function(e) {
e.preventDefault(); // cancels event even if subsequent lines fail
self.doSomething();
});
};
请参阅,以获取一个工作示例,该示例显示了导致错误的只是范围问题
这就是脚本调试工具的用途-报告的错误应该使错误相当明显…在您的submit
回调函数中,此
不再指向您的对象,而是指向元素本身
因此,它导致异常,因为元素没有doSomething
属性,并且您的返回false
被跳过
相反,写下以下内容:
ReserveUI.prototype._eventify = function() {
var self = this;
this.$form.input.submit(function(e) {
e.preventDefault(); // cancels event even if subsequent lines fail
self.doSomething();
});
};
请参阅,以获取一个工作示例,该示例显示了导致错误的只是范围问题
这就是脚本调试工具的用途-报告的错误应该会使错误变得相当明显…听起来像是您的doSomething
代码中有错误(我认为这不仅仅是在程序中返回false
)
为确保事件不会继续,即使出现错误,也不要返回false,而是使用e.preventDefault()
:
this.$form.input.submit(function(e) {
e.preventDefault();
this.doSomething();
});
听起来你的doSomething
代码中有一个错误(我认为这不仅仅是程序中的returnfalse
)
为确保事件不会继续,即使出现错误,也不要返回false,而是使用e.preventDefault()
:
this.$form.input.submit(function(e) {
e.preventDefault();
this.doSomething();
});
这是范围不匹配
this.$form.input.submit(function() { //here "this" is ReserveUI
this.doSomething(); //here "this" is input button
return false;
});
由于input
按钮上没有doSomething()
,脚本将中断,因此不再执行返回false的部分
这是一个你可以绕过这个的方法
ReserveUI.prototype._eventify = function() {
var $this = this; //create a reference to the object
this.$form.input.submit(function() {
$this.doSomething(); //Now call the object method
return false;
});
};
这是范围不匹配
this.$form.input.submit(function() { //here "this" is ReserveUI
this.doSomething(); //here "this" is input button
return false;
});
由于input
按钮上没有doSomething()
,脚本将中断,因此不再执行返回false的部分
这是一个你可以绕过这个的方法
ReserveUI.prototype._eventify = function() {
var $this = this; //create a reference to the object
this.$form.input.submit(function() {
$this.doSomething(); //Now call the object method
return false;
});
};
怎么可能返回错误;在这种情况下会导致异常吗?不,请检查示例:相同但不起作用。添加e.preventDefault
会像预期的那样工作。@Mr.discoupation您为什么相信这一点?尽管e.preventDefault()
不是一个坏主意,但他仍然有一个这个
范围问题。@Mr.come.preventDefault()
修复了事件处理问题-它不会修复.doSomething()的问题
实际上没有被调用。@tosin正是因为将e.preventDefault()
放在回调的顶部可以确保默认值永远不会发生,但是返回false
可能会被忽略,正如您所看到的。如何返回false;在这种情况下会导致异常吗?不,请检查示例:相同但不起作用。添加e.preventDefault
会像预期的那样工作。@Mr.discoupation您为什么相信这一点?尽管e.preventDefault()
不是一个坏主意,但他仍然有一个这个
范围问题。@Mr.come.preventDefault()
修复了事件处理问题-它不会修复.doSomething()的问题
实际上没有被调用。@tosin正是因为将e.preventDefault()
放在回调的顶部可以确保默认值永远不会发生,但是返回false
可能会被忽略,正如您所看到的。他的doSomething
函数的主体中只有return false
。我猜他只是删除了他的实际代码。该函数对于return false
@Sarfraz True没有多大意义,但这仍然是用户应该采取的取消事件默认行为的方法,并且是对此的调用。doSomething()是错误的,因为这不是它所期望的。感谢您的回答。但我不会删除实际代码。我要写点什么而不是做点什么;将来。此代码用于学习。他的doSomething
函数体中只有return false
。我猜他刚刚删除了实际代码。该函数对于return false
@Sarfraz True没有多大意义,但这仍然是用户应该采取的取消事件默认行为的方法,并且是对此的调用。doSomething()是错误的,因为这不是它所期望的。感谢您的回答。但我不会删除实际代码。我要写点什么而不是做点什么;将来。这段代码是用来学习的。不过我认为你的最后一句话用错了。很高兴继续使用“return false”!我喜欢使用它的原因是为了保持代码清晰。谢谢你聪明的回答,除了我认为你的最后一句话弄错了我很高兴继续使用“return false”!我喜欢使用它的原因是为了保持代码清晰。谢谢你聪明的回答