jQuery自定义验证方法问题

时间:2010-09-29 18:16:00

标签: jquery validation

我有一个选择列表,其默认值(对于Please Select)为0.这是由于支付处理系统而无法控制。我有一个add.Method,表明如果select的值为“0”则返回false,否则返回true。它工作正常,除了在提交和获取错误后将select的值更改为其他值时,仍会显示错误消息。我该如何解决这个

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"));
            }
        });
    });

在这看不到错误,我感谢任何帮助。 感谢

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

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

jQuery change() on <select> and firefox

您之前发布的实时链接似乎适用于IE,但不适用于FireFox。