【发布时间】:2016-12-12 18:17:21
【问题描述】:
我为此使用 jquery validate 并有 3 个单选按钮,其中两个有一个可以输入价格的输入。我需要它,所以必须选择 3 个单选按钮中的一个,如果它是前 2 个单选按钮之一,我需要它们在那里也有价格。我需要以某种方式创建一个额外的方法吗?我在页面上包含了我正在使用的其他一些验证,但 html 只显示了我正在处理的部分。
// Validation
$(document).ready(function () {
jQuery.validator.addMethod("noSpace", function(value, element) {
return this.optional(element) || /^http:\/\/mycorporatedomain.com/.test(value);
}, "Please specify the correct domain for your documents");
jQuery.validator.addMethod("checkmeout", function(value, element) {
return this.optional(element) || /^\s*[0-9a-zA-Z][0-9a-zA-Z ]*$/.test(value);
},"Required");
$('#addProductForm').validate({
rules: {
productName: {
minlength: 2,
maxlength: 40,
required: true,
checkmeout: true
},
categoryPlaceholder: {
required: true,
errorClass: "testing"
},
productDescriptionShort: {
minlength: 2,
maxlength: 250,
required: false,
checkmeout: true
},
productDetailsLong: {
minlength: 2,
maxlength: 500,
required: true,
checkmeout: true
},
productFCState: {
required: true
},
productCategory: {
required: true
}
},
messages: {
productName: {
minlength: "Your product name must be between 2 and 40 characters",
required: ""
},
categoryPlaceholder: {
required: ""
},
productDescriptionShort: {
minlength: "Your product description must be between 2 and 250 characters",
required: ""
},
productDetailsLong: {
minlength: "Your product description must be between 2 and 500 characters",
required: ""
},
},
highlight: function(element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function(element) {
$(element).closest('.form-group').removeClass('has-error');
},
errorElement: 'span',
errorClass: 'help-block-error',
errorPlacement: function(error, element) {
if(element.parent('.input-group').length) {
error.insertAfter(element.parent());
} else if(element.parent('#productCategory').length) {
error.insertAfter('.list-group.list-group-root');
} else {
error.insertAfter(element);
}
}
});
});
</script>
#itemFeatured {
margin-bottom: 0;
}
.radio label::after {
background-color: #3390ce;
}
.height-initial {
height: initial;
}
#itemPricing .form-inline {
margin-bottom: 20px;
}
#itemPricing .form-inline label {
width: 120px;
padding-left: 5px;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/awesome-bootstrap-checkbox/0.3.7/awesome-bootstrap-checkbox.min.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/additional-methods.min.js"></script>
<form id="addProductForm">
<div id="itemPricing" class="clearfix">
<div class="row">
<div class="col-sm-12" form-group="">
<label for="itemPricing" class="required" aria-required="true">Pricing</label>
<span id="helpBlock" class="help-block">Select how you want pricing to display on your website.</span>
</div>
<!-- Regular Price -->
<div class="col-sm-12 form-group">
<div class="form-inline radio-input-group">
<div class="radio">
<input type="radio" class="height-initial" name="pricingOptions" id="regularPrice" value="">
<label for="regularPrice" class="required" aria-required="true">Regular Price</label>
</div>
<div class="input-group">
<span class="input-group-addon">$</span>
<input type="text" class="form-control money" id="productPrice" name="productPrice">
</div>
</div>
<div class="form-inline radio-input-group">
<div class="radio">
<input type="radio" class="height-initial" name="pricingOptions" id="salePrice" value="">
<label for="salePrice" class="required" aria-required="true">Sale Price</label>
</div>
<div class="input-group">
<span class="input-group-addon">$</span>
<input type="text" class="form-control money" id="productPrice" name="productPrice">
</div>
</div>
<div class="form-inline radio-input-group">
<div class="radio">
<input type="radio" class="height-initial" name="pricingOptions" id="emailPrice" value="">
<label for="emailPrice" class="required" aria-required="true">Email for Price</label>
</div>
</div>
</div>
</div>
</div>
<div class="pull-right">
<button type="submit" class="btn btn-success save ladda-button" data-style="zoom-in">Save</button>
</div>
</form>
【问题讨论】:
-
你的问题有点不清楚。请解释一下。
-
我怎样才能验证这个表格,以便这个组是必需的,因为用户必须选择一个单选选项,如果它是前两个选项之一,他们还必须在输入。
-
您不小心在页面上重复了两次
productPrice字段。
标签: jquery twitter-bootstrap jquery-validate