代码之家  ›  专栏  ›  技术社区  ›  ntan

jquery验证更改字段动态验证

  •  0
  • ntan  · 技术社区  · 15 年前

        <script language="javascript">
    
    $(document).ready(function() {
    
    
        var validator=$("form#myForm")
            .validate({
                submitHandler: function(form){ 
                alert("Submited");
                },
                invalidHandler: function(form, validator) {
                    var errors = validator.numberOfInvalids();
                    if (errors) {
                      console.log(validator.invalidElements());
                    }
                  },
                rules: {
                           field1: { required: true }            
                        }
        });    
    
    })
    
    function changeValidation()
    {
            var validationType=$("#nextFieldValidation").val();
    
            console.log("selected validation type is "+validationType);
    
            switch(validationType)
            {
                case "integer":
                    console.log("set INTEGER validation");
                    $("#nextField").rules("remove");
                    $("#nextField").rules("add", {
                            digits: true
                        });
                break;
                case "float":
                    console.log("set FLOAT validation");
                    $("#nextField").rules("remove");
                    $("#nextField").rules("add", {
                            number: true
                        });
                break;
                default:
                    console.log("REMOVE validation");
                    $("#nextField").rules("remove");
                break;
            }
    }
    </script>
    
    
    <form id="myForm" name="form" action="action.php">
        <div><input type="text" name="field1" id="field1" /></div>
    
        <div>
            <select name="nextFieldValidation" id="nextFieldValidation" onclick="changeValidation();">
                <option value="">Select next filed validation</option>
                <option value="integer">Integer</option>
                <option value="float">Float</option>
            </select>
        </div>
    
        <div><input type="text" name="nextField" id="nextField" /></div>
    
        <div><input type="submit" /></div>
    
    </form>
    

    nextField验证由一个选择框控制。用户决定nextField是整数还是浮点。

    代码运行良好,但我需要添加一些东西来增加用户的可访问性。

    脚本:

    用户填充字段1选择整数验证并填充12.8,然后单击提交 他只得到正确的数字

    问题就在这里。“请只输入数字”错误仍然存在困惑。你必须提交表单才能继续,但为什么有人在收到错误时单击“提交”。

    谢谢

    1 回复  |  直到 15 年前
        1
  •  0
  •   Steven Raines    15 年前

    我建议您将对“changeValidation()”的调用改为onchange,而不是onclick。onclick很可能在您单击控件以使其成为焦点时触发,而不是在您选择其他选项时。因此,在运行验证时,它仍然被设置为整数。

    所以,试着改变一下:

    <select name="nextFieldValidation" id="nextFieldValidation" onclick="changeValidation();">
    

    收件人:

    <select name="nextFieldValidation" id="nextFieldValidation" onchange="changeValidation();">