【问题标题】:jQuery Validation Not Working on IphonejQuery 验证在 iPhone 上不起作用
【发布时间】:2012-02-23 16:36:14
【问题描述】:

我已将活动监视器中的表单链接到移动网站,并且我正在使用 jQuery validate 进行验证。 在桌面浏览器上一切正常,但是当我检查我的 Iphone 时,验证不起作用。

我没有使用 JQuery 的经验,因此非常感谢任何帮助。

提前谢谢你!

现场演示 http://files.perfectday.gb.com/internal/stackoverflow/mobile-form/get-your-coupon.php

我的验证JQuery和表单如下。

    <script type="text/javascript">
    $.validator.methods.equal = function(value, element, param) {
        return value == param;
    };
    $(document).ready(function(){
    $("#subForm").validate({
            rules: {
                math: {
                    equal: <?php echo $randomNumTotal; ?>   
                }
            },
            messages: {
                math: "Try again!!"
            }
        });
    });
    </script>


<!-- Form -->
    <form action="http://perfectday.createsend.com/t/j/s/nyuyh/" method="post" id="subForm">

        <div class="name">
            <label for="name">Name:<span>*</span></label><br>
            <input type="text" name="cm-name" id="name" size="25" class="required text-input" />
        </div>
        <div class="nyuyh-nyuyh">
            <label for="nyuyh-nyuyh">Email Address:<span>*</span></label><br>
            <input type="text" name="cm-nyuyh-nyuyh" id="nyuyh-nyuyh" size="25" class="required email text-input"/>
        </div>
        <div class="address1">
            <label for="Address 1">Address 1:<span>*</span></label><br>
            <input type="text" name="cm-f-juar" id="Address1" size="25" class="required text-input" />
        </div>
        <div class="address2">
             <label for="Address 2">Address 2:<span>*</span></label><br>
            <input type="text" name="cm-f-juaj" id="Address2" size="25" class="text-input required" />
        </div>
        <div class="city">
            <label for="City">City/town:<span>*</span></label><br>
            <input type="text" name="cm-f-juat" id="City" size="25"class="required text-input" />
        </div>
        <div class="postal">
            <label for="postal">Post code:<span>*</span></label><br>
            <input type="text" name="cm-f-juai" id="postal" size="25"class="required text-input" />
        </div>
        <div class="captcha">
            Enter the correct result<span>*</span><br>
            <input type="text" name="captchaImage" id="sum"  value="<?php echo $randomNum ?> + <?php echo $randomNum2 ?>" disabled="disabled" />
            <input type="text" name="math" id="math" maxlength="6" />
        </div>
    <input value="submit information" class="submit" type="image" src="images/trans.png" class="get-your-coupon-submit" alt="Submit" >
    <br>
    </form>

【问题讨论】:

  • 我很抱歉。我会做。谢谢你的时间。
  • 当您说“验证不起作用”时,您是什么意思?我用我的 iPhone 和模拟器都试过了,提交表单不会导致任何 javascript 错误。数学题旁边还有一个“再试一次”的文字。通常最好在 iPhone 上打开 Safari 的调试控制台。它可以在设置 -> Safari -> 高级 -> 调试控制台中找到。
  • 验证是指在输入正确信息之前不允许提交的功能。问题在于 jquery-1.7.1 不起作用。不完全确定为什么。 JQuery v1.3.2 现在似乎对我有用。

标签: jquery forms mobile jquery-validate


【解决方案1】:

我在使用 jQuery 1.6.1+ 版和 Validations 插件 1.9 版的 iPhone 上遇到了同样的问题

解决方法是将插件配置为不对表单提交进行验证:

$("form").validate({
   onsubmit: false
});

验证表单并以编程方式提交:

if( $("form").valid() ){
  // post validation code

  form.submit()
}

【讨论】:

  • 您将“以编程方式提交”片段放在哪里?我在问,因为您无法在任何地方访问“表单”变量(仅在 submitHandler: function(form) 中)。如果我尝试将其作为 "$('form').submit()" 进行,则会出现重复问题。
【解决方案2】:

(3 年后更新):我还发现 iPhone 和 jQuery.validate 存在问题。尽管正在应用验证,但第一个字段并未滚动到视图中。为了解决这个问题,我刚刚更新了我的 .invalidHandler() 方法以包括:

$("foo").validate({
  invalidHandler: function(e, validator) {
    if(window.navigator.userAgent.match(/iphone/i)) {
      window.setTimeout(function() {
        $("html,body").animate({
          scrollTop: $(validator.errorList[0].element).offset().top
        });
      }, 0);
    }
  }
});

【讨论】:

  • 我在掩码方法中有类似的 Jquery 问题。 jQuery('#zip').mask('00-000');是我屏蔽输入文本的代码。这东西适用于android,但在ios中添加'-'字符串后会被反转。如果我想输入 00-123,在 ios 中会写成 00-321 你能帮我解决这个小问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
相关资源
最近更新 更多