微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery:如果语句为false,则运行自定义函数\'if\'

如何解决jQuery:如果语句为false,则运行自定义函数\'if\'

| 自定义函数formvalidate应该在其他版本之后运行,但不会运行。如何触发它运行? 我想在这里完成的工作是检查表单的文本字段。如果少于3个字符,则会向用户显示一些文本。如果输入大于3,则提交表单。 -我在想错路,效果更好。
$(\'#submit\').click(formdvalidate);
功能
function formdvalidate(){
    $(\".form-sel\").each(function(){
        var n = $(this).closest(\'.contain-form\').find(\'.custom:first\').val().length;
        if ($(\'option:selected\',this).val() === \'custom\' && n < 3) {
            $(this).closest(\'.contain-form\').find(\'.alert-short:first\').show();
        }else{                          
            $(\'#poll\').submit();
        }
    });                 
}
    

解决方法

         通过
.click()
分配为点击处理程序的函数将jQuery事件对象作为其第一个参数-您将该参数命名为与函数相同的参数
formdvalidate === true
永远不会取值为true,因为
formdvalidate
是全局范围内的函数,而item5ѭ范围内的jQuery事件对象则按照第1项 在
formdvalidate
函数中,返回值位于
.each()
函数内部,因此
formdvalidate
从不实际返回任何内容。 我不确定您真正想要的是什么,或页面的外观如何,但是根据您对Slava Yanson的评论,我对您的最佳猜测是以下(尽管我仍然不确定某些事情...)
$( \'#submit\' ).click( function( e )
{
  if( formdvalidate() === true) 
  {
    $( \'#poll\' ).submit();
  }

  e.preventDefault();
} );

function formdvalidate()
{
  var returnValue;

  $( \'.form-sel\' ).each( function()
  {
    var $containForm = $( this ).closest( \'.contain-form\' ),$alertShortFirst = $containForm.find( \'.alert-short:first\' ),n = $containForm.find( \'.custom:first\' ).val().length;
    if( $( \'option:selected\',this ).val() === \'custom\' && n < 3 )
    {
      $alertShortFirst.show();
      returnValue = false;
    }
    else
    {
      $alertShortFirst.hide();
      returnValue = true;
    }
  } );

  return returnValue;
}
    ,        
formdvalidate
参数隐藏
formdvalidate
功能。 使用更好的名字。     ,        尝试
$(\'#submit\').click(function() {
 if (formdvalidate() === true)  {
     $(\'#poll\').submit();
        } else {        
             formdvalidate();
        }

});
我不知道您的逻辑是否会完成您要尝试的工作。     ,        在代码的第2行上,您正在将函数的实例与布尔值进行比较。那不会验证。您能否提供有关您要完成的目标的更多信息?     ,        您的参数\“ formvalidate \”掩盖了您的\“ formvalidate \”函数。只需将您的参数重命名为如下所示:
$(\'#submit\').click(function(do_validate) {
 if (do_validate === true)  {
     $(\'#poll\').submit();
        } else {        
             formdvalidate();
        }
});
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。