Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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验证-至少需要2个字段中的1个字段填充默认文本以外的任何内容_Javascript_Jquery_Forms_Validation - Fatal编程技术网

Javascript Jquery验证-至少需要2个字段中的1个字段填充默认文本以外的任何内容

Javascript Jquery验证-至少需要2个字段中的1个字段填充默认文本以外的任何内容,javascript,jquery,forms,validation,Javascript,Jquery,Forms,Validation,我有一个html联系人表单,在每个字段中都有默认值-即“First name”(我在其中使用,以便在用户单击时这些值消失) 我有两个字段必须填写,两个字段中的任何一个都必须填写。当然,所有字段都已确认为已填写,因为它们都有默认值。我通过使用validator.addMethod忽略默认短语来解决这个问题 我还设法调整了验证,允许使用validator.addMethod填充至少2个字段中的1个,但仅当我去掉默认值时 当存在默认值并且希望至少填写2个字段中的1个字段时,就会出现问题。我不知道当/如

我有一个html联系人表单,在每个字段中都有默认值-即“First name”(我在其中使用,以便在用户单击时这些值消失)

我有两个字段必须填写,两个字段中的任何一个都必须填写。当然,所有字段都已确认为已填写,因为它们都有默认值。我通过使用validator.addMethod忽略默认短语来解决这个问题

我还设法调整了验证,允许使用validator.addMethod填充至少2个字段中的1个,但仅当我去掉默认值时

当存在默认值并且希望至少填写2个字段中的1个字段时,就会出现问题。我不知道当/如果至少有一个字段具有唯一的非默认值时,如何让验证识别

我在下面包含了我的代码

我不是jquery/javascript方面的专家,所以希望有一个简单的解决方案

<script type="text/javascript"> 
    $(document).ready(function() {

        jQuery.validator.addMethod("notEqual", function(value, element, param) {
          return this.optional(element) || value != param;
        }, "This field is required.");

        jQuery.validator.addMethod("require_from_group", function (value, element, options) {
            var numberRequired = options[0];
            var selector = options[1];
            var fields = $(selector, element.form);
            var filled_fields = fields.filter(function () {
                return $(this).val() != "";

            });
            var empty_fields = fields.not(filled_fields);
            if (filled_fields.length < numberRequired && empty_fields[0] == element) {
                return false;
            }
            return true;
        }, jQuery.format("Please enter either a phone number or email address."));


      $("#contact-form").validate({
        groups: {
            names: "phone email"
        },         
        rules: {
          fname: {
            required: true,
            notEqual: "First name*"
            }, 
          lname: {
            required: true,
            notEqual: "Last name*"
            },
          phone: {
            require_from_group: [1, ".phoneEmail"]
            },
          email: {
            require_from_group: [1, ".phoneEmail"]
            },
        }

        });

    });

    jQuery.extend(jQuery.validator.messages, {
        require_from_group: jQuery.format("'Please enter either username/ email address to recover password'/Please fill out at least {0} of these fields.")
    });

$(文档).ready(函数(){
addMethod(“notEqual”,函数(值、元素、参数){
返回此值。可选(元素)| |值!=param;
},“此字段为必填项。”);
jQuery.validator.addMethod(“需要来自_组的_”),函数(值、元素、选项){
var numberRequired=选项[0];
var选择器=选项[1];
变量字段=$(选择器,element.form);
var filled_fields=fields.filter(函数(){
返回$(this).val()!=“”;
});
var empty_fields=fields.not(filled_fields);
if(填充字段.length


你的信息
*必填字段
尝试使用该属性

jQuery.validator.addMethod(“需要来自组的组”),函数(值、元素、选项){
var numberRequired=选项[0];
var选择器=选项[1];
变量字段=$(选择器,element.form);
var filled_fields=fields.filter(函数(){
返回$(this.val()!=this.defaultValue;
});
if(filled_fields.length

演示:

为了检查电子邮件或电话号码的唯一性,您需要在填写字段后立即进行Ajax调用

<form id="contact-form" method="post" action="contact-submitted.php" >          
        <input type="text" class="clearField" name="fname" id="fnameField" value="First name*" />
        <input type="text" class="clearField" name="lname" id="lnameField" value="Last name*" />
        <input type="text" class="hidden" name="subject" id="subjectField" />
        <input type="text" class="clearField phoneEmail" name="phone" id="phoneField" value="Phone number*" />
        <input type="text" class="clearField phoneEmail" name="email" id="emailField" value="Email" />
        <textarea name="message" class="clearField" id="messageField">Your message</textarea>
        <span class="required-field">*required field</span>
        <input type="submit" id="contact-submit" value="Start planning now" />
    </form>
jQuery.validator.addMethod("require_from_group", function (value, element, options) {
    var numberRequired = options[0];
    var selector = options[1];
    var fields = $(selector, element.form);

    var filled_fields = fields.filter(function () {
        return $(this).val() != this.defaultValue;
    });
    if (filled_fields.length < numberRequired && filled_fields.index(element) == -1) {
        return false;
    }
    return true;
}, jQuery.format("Please enter either a phone number or email address."));