Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击单选按钮时,jquery验证不会取消高亮显示_Javascript_Jquery_Jquery Mobile_Jquery Validate - Fatal编程技术网

Javascript 单击单选按钮时,jquery验证不会取消高亮显示

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

我有一个带有单选按钮组的表单,它位于字段集中带有数据角色=控制组。我正在使用jquerymobile和jqueryvalidate插件来处理表示和表单验证。我遇到的问题是,我定义的unhighlight方法在单击submit按钮的序列之后没有被调用,导致验证显示错误,然后单击单选按钮

我的验证设置如下所示:

$(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,在这种情况下,这并不重要,因为我们没有切换任何东西,我们只是强制进行验证测试。如果状态发生更改,插件将做出适当的反应。