【问题标题】:jQuery custom validation method issuejQuery自定义验证方法问题
【发布时间】:2010-09-29 18:16:00
【问题描述】:

我有一个默认值(请选择)为 0 的选择列表。这是由于支付处理系统的原因,超出了我的控制范围。我有一个 add.Method 说明如果选择的值为“0”则返回 false,否则返回 true。它工作正常,除了当您在提交并收到错误后将选择的值更改为其他值时,仍然显示错误消息。我该如何解决这个问题

HTML:

<form action="" method="post" id="SinglePmnt">
    <td>
     <select name="technology" class="select" id="singleTech">
      <option value="0" selected="selected">&nbsp;Please Select</option>
      <option value="Interactive Brokers">&nbsp;Interactive Brokers</option>
      <option value="MB Trading">&nbsp;MB Trading</option>
      <option value="Patsystems">&nbsp;Patsystems</option>
      <option value="PFG">&nbsp;PFG (Peregrine Financial)</option>
      <option value="TD AMERITRADE">&nbsp;TD AMERITRADE</option>
      <option value="Trading Technologies">&nbsp;Trading Technologies</option>
      <option value="Vision Financial Markets">&nbsp;Vision Financial Markets</option>
      <option value="Hosted">&nbsp;Zen-Fire</option>
     </select>
    </td>
    <td>Single Payment of $995</td>
    <td>
      <input type="hidden" name="item_number" value="34">
      <input type="submit" value="" class="orderNow" />
    </td>
</form>

使用 jquery.validate.js 的验证规则

$(document).ready(function() {
        $.validator.addMethod(
            "SelectTechnology",
            function(value, element) {
                if ($("#singleTech").val() === '0'){
                    return false;
                } else return true;
            },
            "Please Select a Technology"
        );
        var validator = $("#SinglePmnt").validate({
            rules: {
                    technology: {
                        SelectTechnology: true
                    }
            },
            errorElement: "span",
            errorPlacement: function(error, element) {
                error.appendTo(element.parent("td"));
            }
        });
    });

看不到错误,感谢您的帮助。 谢谢

【问题讨论】:

  • 如果您可以在 jsfiddle.com 上模拟它可能会有所帮助。根据你所说的,我很难弄清楚到底是什么错误。
  • 似乎无法在 js fiddle 上添加验证插件。基本上,当您选择不同的值时,它不会清除错误消息。它应该这样做,而是不断添加错误消息。 jsfiddle.net/Yjt98

标签: jquery validation


【解决方案1】:

当您使用 jsfiddle 时(使用稍微不正统的方式将元素添加到 iframe),您需要将您的 JS 直接包含在下面引用您的插件的 HTML 部分中。我似乎只使用您的代码就可以使用它:

http://jsfiddle.net/Yjt98/1/

这就是你想要它做的,对吗?它似乎正在使用 onchange 事件验证字段。让我知道你是否期待不同的行为。

【讨论】:

  • 谢谢!我看不出有什么不同,但它的工作原理和预期的一样,你修复了什么?
  • 没什么!它只适用于您提供的代码。也许是……嗯……我使用的特定品牌的互联网灰尘。
【解决方案2】:

尝试在模糊事件中强制验证。

$('#singleTech').click(function() {
  $('#SinglePmnt').validate().element('#singleTech');
});

$('#singleTech').blur(function(){
  $('#SinglePmnt').validate().element('#singleTech');
});

jQuery change() on <select> and firefox

您之前发布的实时链接似乎在 IE 中有效,但在 FireFox 中无效。

【讨论】:

  • 我从来没有见过 IE 表现得像我期望的 FF 那样,反之亦然。我知道它是 IE 中的一个错误,但是伙计!我会试一试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多