Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net MVC3中的Javascript验证_Javascript_Jquery_Asp.net Mvc 3_Jquery Validate - Fatal编程技术网

asp.net MVC3中的Javascript验证

asp.net MVC3中的Javascript验证,javascript,jquery,asp.net-mvc-3,jquery-validate,Javascript,Jquery,Asp.net Mvc 3,Jquery Validate,我的问题是,当第一次加载页面时,会弹出警报(1)和警报(2),但当我单击“保存”按钮时,警报(3)不会弹出,但会显示验证消息(如果我填写了正确或错误的下拉列表,则不会计量),所有内容都会保存。 我有这种JS: <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Cont

我的问题是,当第一次加载页面时,会弹出警报(1)和警报(2),但当我单击“保存”按钮时,警报(3)不会弹出,但会显示验证消息(如果我填写了正确或错误的下拉列表,则不会计量),所有内容都会保存。 我有这种JS:

        <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    <script type="text/javascript">

        $(document).ready(function () {
            alert(1);
            PassWayValidators();
            $('#documents_TravelDocumentDocumentPass_PassDate').datepicker();           

        });

        function PassWayValidators() {
            alert(2);
            $.validator.addMethod('PassWayValidator',
                    function (value, element) {
                        alert(3);
                    }, 'Please Inert Valid Numbers');

            $("#documents_TravelDocumentDocumentPass_PassWayId").rules("add", {
                PassWayValidator: true
            });
        }
    </script>
    <...Some Code Here...>
         <div class="TravelDocumentDocumentPassCommentInner">
                                <span>გადაცემის ფორმა
                                    <br />
                                    @Html.DropDownListFor(model => documents.TravelDocumentDocumentPass.PassWayId, (IEnumerable<SelectListItem>)ViewBag.DocumentPassTypeList, String.Empty, isDisabled)
                                    @Html.ValidationMessageFor(model => documents.TravelDocumentDocumentPass.PassWayId, "*")
                                </span>
                            </div>
    <...Some Code Here too... and>
 @Html.ValidationSummary()

$(文档).ready(函数(){
警报(1);
PassWayValidators();
$(“#documents_TravelDocumentDocumentPass_PassDate”).datepicker();
});
函数PassWayValidators(){
警报(2);
$.validator.addMethod('PassWayValidator',
函数(值、元素){
警惕(3);
},“请输入有效数字”);
$(“#documents_TravelDocumentDocumentPass_PassWayId”)。规则(“添加”{
PassWayValidator:true
});
}
გადაცემის ფორმა

@Html.DropDownListFor(model=>documents.TravelDocumentPass.PassWayId,(IEnumerable)ViewBag.DocumentPassTypeList,String.Empty,isDisabled) @Html.ValidationMessageFor(model=>documents.TravelDocumentPass.PassWayId,“*”) @Html.ValidationSummary()

有人能告诉我问题出在哪里吗?

因为您正在编写一个自定义验证器,我马上看到两件事需要纠正

首先,您需要调用
PassWayValidators()在$(document).ready()之外。我不是100%确定这是必要的,但我认为这是我能够让自定义验证工作的唯一方法

PassWayValidators();

$(document).ready(function () {
    $('#documents_TravelDocumentDocumentPass_PassDate').datepicker();                     
});
然后,您需要配置下拉列表,以确保它通过指定某些html属性调用验证函数

@Html.DropDownListFor(model => 
    documents.TravelDocumentDocumentPass.PassWayId, 
    (IEnumerable<SelectListItem>)ViewBag.DocumentPassTypeList, 
    String.Empty, 
    new { 
        data_val = "true",
        data_val_PassWayValidator = "Please insert valid numbers"
    })
@Html.DropDownListFor(模型=>
documents.TravelDocumentDocumentPass.PassWayId,
(IEnumerable)ViewBag.DocumentPassTypeList,
字符串。空,
新{
数据_val=“true”,
data\u val\u PassWayValidator=“请插入有效数字”
})
差不多吧。我不知道规则(“add”{})是用来做什么的,但我不确定您是否需要它。如果我遗漏了什么,这里有一个从我的一个应用程序中提取的完整样本

<!-- some form and other html and stuff -->
@Html.TextBox("Amount", null, new 
{ 
    data_val = "true", 
    data_val_required = "This field is required", 
    data_val_number = "The field must be a number",
    data_val_notBeZero = "Value must not be zero"
})

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>

<script type="text/javascript">
    // validators
    $.validator.addMethod("notBeZero", function (value, element)
    {
        if (Number(Math.abs(value).toFixed(2)) == 0)
        {
            return false;
        }

        return true;

    }, "Value must not be zero");

    $.validator.unobtrusive.adapters.addBool("notBeZero");
</script>

@文本框(“金额”,空,新
{ 
数据_val=“true”,
data\u val\u required=“此字段为必填项”,
data\u val\u number=“该字段必须是数字”,
data\u val\u notBeZero=“值不能为零”
})
//验证器
$.validator.addMethod(“notBeZero”,函数(值,元素)
{
if(数字(数学绝对值).toFixed(2))==0)
{
返回false;
}
返回true;
},“值不得为零”);
$.validator.unobtrusive.adapters.addBool(“notBeZero”);