Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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
Javascript 选择框上的jQuery验证不起作用_Javascript_Jquery - Fatal编程技术网

Javascript 选择框上的jQuery验证不起作用

Javascript 选择框上的jQuery验证不起作用,javascript,jquery,Javascript,Jquery,我正在使用jQuery验证插件进行客户端验证,但我的验证在我的选择框上不起作用 HTML <select id="select" class="required"> <option value="-1">Choose</option> <option value="child">test2</option> </select> <form id="formid"> <select

我正在使用jQuery验证插件进行客户端验证,但我的验证在我的选择框上不起作用

HTML

<select id="select" class="required">
    <option value="-1">Choose</option>
    <option value="child">test2</option>
</select>
<form id="formid">
    <select name="select" class="required">
        <option value="">Choose</option>
        <option value="child">test2</option>
    </select>

    <input type="submit" />
</form>​
如何使其工作?

而不是:

$(“#选择”).val()

尝试:

$(“#选择:选定”).val()

$(“#select”).val()
返回所有选项值,而不是所选值


这里,我的假设是,在验证控件
报告犯罪
时,您希望检查用户是否选择了选项-1。

解决此问题的一个简单方法是为无效的
选项
提供
的值。然后只需在表单上调用validate,当选择了
“Choose”
时,表单将不会提交

HTML

<select id="select" class="required">
    <option value="-1">Choose</option>
    <option value="child">test2</option>
</select>
<form id="formid">
    <select name="select" class="required">
        <option value="">Choose</option>
        <option value="child">test2</option>
    </select>

    <input type="submit" />
</form>​
默认情况下,

选择

配合


required:true

尽管这可能适用于上述某些方法,但如果您希望使用自定义验证函数,则应使用此处所述的addMethod:

因此,您首先要通过以下方式添加该方法

$.validator.addMethod("requiredSelect", function(element) {
                return ( $("#select").val() !='-1' );
            }, "You must select an option.");
然后简单地为验证器分配

$("#formid").validate({
  rules: {
    select: { requiredSelect : true }
  }
});

select
元素中缺少
name
属性。
在我的例子中,这就是问题所在,因为jQuery验证插件在验证时查找
名称
而不是
id

由于某种原因,在我的例子中没有提供任何解决方案,它归结为jQuery验证调用下拉列表值的“可选”检查,该下拉列表调用了!必需的规则

当选择框选择空值时,required显示为“false”,这意味着当required失败时它始终是可选的,因此它从不运行required规则

我用下面的代码重写了可选函数,如果它是必填项,则在可选项上返回“False”:

// Get Select to work
    $.validator.prototype.optional = function (element) {
        var val = this.elementValue(element);

        // Custom logic to get Select to show validate when value is empty
        if (element.nodeName.toLowerCase() === "select") {
            if (element.hasAttribute("data-val-required") || element.hasAttribute("required")) {
                return false;
            }
        }

        return !$.validator.methods.required.call(this, val, element) && "dependency-mismatch";
    };

你不工作是什么意思?你试过调试吗?什么是举报犯罪?是表格吗?请把表单的代码也写进去。是的,我试过调试它。控制台中没有错误。
报告犯罪
是您的表单id吗?是@Shree i是表单id。默认情况下选择select。我想检查用户是否提交表单,如果当前选择的项目是“选择”,那么它必须显示验证错误。知道了?您的解决方案不适合我:(您确定在提交表单时确实发生了验证调用吗?。请尝试添加一些
警报
控制台。记录
消息以确定是否正确。否,它不起作用。验证后会显示。请尝试您的解决方案@3dGOO这就是解决方案。您需要使用空值指定
。)。。。