[英]jQuery: event.preventdefault();
如果我自己创建click事件及其处理程序,那么在正确的位置执行event.preventdefault()没问题。 但是,如果有一个已经注册了单击事件和相应处理程序的元素,在某些情况下,我想停用其进一步的工作(例如,提交)。
这是示例:
页面上有一个提交按钮,带有已注册的单击元素(可能约有数百个验证例程。)和具有特定值的变量(al)。 是此变量的瞬时值= 5(在某些情况下不是所需的值->值为= 3)。
HTML
// other form elements
<input type="submit" name="next" value="go"/>
jQuery的JavaScript
var al = 3;
$("input[type='submit'][name='next']").click(
function(event) {
if (al != 3) {
alert (al+': Not OK');
event.preventDefault();
} else {
alert ('OK');
}
}
);
在此示例中,我无法阻止表单被提交。 我怎么了
编辑:event.preventDefault ist不是问题,崇高(我的编辑器)还是可以纠正它。
-----我想简化这个问题---------
那是一个SubmitButon(这次是从原始上下文中的yii):
视图
echo CHtml::submitButton(
Yii::t ('Somethin', 'next'),
array(
'name' => 'next',
'onclick' => "checkDetails()"
));
JS
checkDetails() {
PREVENT_SUBMITTING
}
PREVENT_SUBMITTING的外观如何? 在这种情况下,没有任何条件会阻止提交?
更改
event.preventdefault();
至
event.preventDefault();
您必须将“ D”写为大写字母。
您可以通过两种方式进行
$("input[type='submit'][name='next']").click(
function(event) {
if (al != 3) {
alert (al+': Not OK');
event.preventDefault();
} else {
alert ('OK');
}
}
);
要么
$("input[type='submit'][name='next']").click(
function(event) {
if (al != 3) {
alert (al+': Not OK');
return false;
} else {
alert ('OK');
return true;
}
}
);
现在我有一个可行的解决方案:
视图
echo PHtml::submitButton(Yii::t('Something', 'next'),
array(
'name' => 'next',
'onclick' => "return checkDetails(event)",
)
);
jQuery的
function checkDetails (event) {
event.preventDefault();
event.returnValue =false; // for IE
return false;
}
$("input[type='submit'][name='next']").click(
function(event) {
if (al != 3) {
alert (al+': Not OK');
event.preventDefault();
} else {
alert ('OK');
}
}
);
试试这个Change event.preventDefault();
$("input[type='submit'][name='next']").click(
function(event) {
if (al != 3) {
alert (al+': Not OK');
event.preventDefault();
} else {
alert ('OK');
}
}
);
我最近需要使用.off()
代替.preventDefault()
我需要拦截并阻止一个事件处理程序,同时仍然允许主click事件冒泡。 可能是您所需要的。
除了这个问题,我将建议您将验证部分e分开。 G
添加另一个表单输入,例如proceed
<input type="hidden" name="proceed" value="0"/>
<input type="submit" name="next" value="go"/>
添加自定义验证方法
jQuery.validator.addMethod("validateSteps", function(value, element) {
return value == 3 ? false : true;
}, "*");
向表单添加验证规则
$("#your_form_id").validate({
rules: {
"proceed": {
validateSteps: true
}
},
messages: {
"proceed": {
validateSteps: "custom message"
}
}
});
您必须设置适当的值才能proceed
输入字段。 这样,您无需费心处理事件问题。 而且它更具可定制性,例如,如果您有十个步骤,每个步骤的验证要求不同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.