Javascript 单击单选按钮时,jquery验证不会取消高亮显示
我有一个带有单选按钮组的表单,它位于字段集中带有数据角色=控制组。我正在使用jquerymobile和jqueryvalidate插件来处理表示和表单验证。我遇到的问题是,我定义的unhighlight方法在单击submit按钮的序列之后没有被调用,导致验证显示错误,然后单击单选按钮 我的验证设置如下所示:Javascript 单击单选按钮时,jquery验证不会取消高亮显示,javascript,jquery,jquery-mobile,jquery-validate,Javascript,Jquery,Jquery Mobile,Jquery Validate,我有一个带有单选按钮组的表单,它位于字段集中带有数据角色=控制组。我正在使用jquerymobile和jqueryvalidate插件来处理表示和表单验证。我遇到的问题是,我定义的unhighlight方法在单击submit按钮的序列之后没有被调用,导致验证显示错误,然后单击单选按钮 我的验证设置如下所示: $(document).on("pageshow", "#page", function() { $(".product_type_f
$(document).on("pageshow", "#page", function() {
$(".product_type_form").validate({
validClass: "data-valid",
errorClass: "data_invalid",
errorElement: "span",
errorPlacement: function(error, element) {
if ($(element).is("input[type='radio']")) {
container = $(element).parents('div.ui-controlgroup-controls');
} else {
container = $(element).parents('div.ui-input-text');
}
error.insertBefore(container);
},
highlight: function(element, errorClass, validClass) {
if ($(element).is("input[type='radio']")) {
container = $(element).parents('div.ui-controlgroup-controls');
} else {
container = $(element).parents('div.ui-input-text');
}
container.addClass(errorClass);
container.removeClass(validClass);
},
unhighlight: function (element, errorClass, validClass) {
if ($(element).is("input[type='radio']")) {
container = $(element).parents('div.ui-controlgroup-controls');
} else {
container = $(element).parents('div.ui-input-text');
}
container.addClass(validClass);
container.removeClass(errorClass);
}
});
});
我查看了jQuery插件文档以进行验证,并注意到:
onclick
类型:布尔或函数()
单击时验证复选框和单选按钮。设置为false以禁用
我理解这意味着它的默认值为true(它已启用),那么为什么我的highlight方法没有被单选按钮onclick事件调用呢
可以看到这一页
试图为其设置小提琴,但无法使其工作:(
TIA通过javascript操作复选框/单选按钮时,需要调用“刷新”方法以影响样式。下面的示例:
$("input[type='radio']").attr("checked",true).checkboxradio("refresh");
如果选择任何单选按钮,此小代码将调用您的方法
$('[name$="product_type"]:checked').each(function()
{
yourmethod(this);
});
而这个关键字指的是您选择的单选按钮
$('[name$="product_type"]:checked').each(function()
{
yourmethod(this);
});
出于某种原因,仅当您使用jQuery Mobile时,
无线电
的点击事件被jQuery验证插件忽略
这里有一个变通方法,当单击单选按钮时,可以通过编程触发验证测试
$('input[name="product_type"]').on('click', function() {
$(this).valid(); // triggers a validation test
});
您的演示已修改:这似乎总是将最后一个单选按钮设置为chec keDont add attr('checked',true)唯一的链刷新方法我创建了一个名为radio_group的新验证方法,因为我无法按要求为无线电组工作。我还创建了一个规则和消息映射。这些方法改进了行为,但我遇到的最大问题是理解为什么会在数据输入期间触发事件,如“按键启动”和“按模糊”和“单击时”所有的提交按钮都被捕获并由validate执行,但单选按钮单击没有?我希望我的新单选组方法不仅在单击提交按钮时被调用,而且在单击单选按钮或文本输入模糊时也被调用。你是对的…
单选按钮在单击时被验证。请向我们展示OP中的相关HTML标记。永远不要依赖外部链接/演示。在你的JSFIDLE中,你的HTML属性非常松散…几乎一半都缺少引号。我开始在你的JSFIDLE上工作,然后我退出,因为我完成了很多本应完成的工作。在这里提出问题的最佳方法是也就是说,我们不需要CSS或完整的表单标记(我不会用所有的代码来加上你遗漏的引号)。请看:输出很复杂,或多或少和我的服务器上的一样(尽管出于某种原因,样式有点不对劲)。请随意用叉子和mod。我已经整理了让您不安的部分,并删除了大部分不相关的内容。这不是OP问题的答案。插件应该已经处理好了。太好了。非常感谢!对不起,我不能投票。只有10个代表。看来jQM想要处理单选按钮单击事件并演示作为工具提示出现的错误。我猜它可以防止事件捕获后冒泡,因此Validate看不到它。@NickWeavers,抱歉,jQM中没有内置工具提示。当jQuery Validate未初始化时,您可能会看到HTML5验证启动。@NickWeavers对于单选按钮和复选框,请收听change
不单击
@Omar,在这种情况下,这并不重要,因为我们没有切换任何东西,我们只是强制进行验证测试。如果状态发生更改,插件将做出适当的反应。