Hi , I double checked on javascript's XOR operator and it only works with
bitwise: so you will have to write your own XOR . This isn't hard : [code]
if (!foo != !bar) [\code] should work for all elements.
or this
[code]if( ( foo && !bar ) || ( !foo && bar ) )[\code]
For the validator method I haven't actually tried to run this but you can
try this:[code]
$.validator.addMethod(
"onlyCheckOne",
function(value, elements) {
// but put whatever you're using to see if either is checked
in the next line
return this.optional(value) || elements[o]:checked XOR
elements[1]:checked;
},
"Please check either participations or days, but not both"
)[/code] note change XOR to whatever method you decide to use.
Then add the check to your rules.
DED
On Mon, Oct 12, 2009 at 12:36 AM, Phper <[email protected]> wrote:
>
> <script type="text/javascript" src="http://code.jquery.com/jquery-
> latest.js"></script>
> <script type="text/javascript" src="http://dev.jquery.com/view/trunk/
> plugins/validate/jquery.validate.js"></script>
>
> <script type="text/javascript">
> <!--
> $(document).ready(function() {
> $("#form1").validate({
> rules: {
> title: {
> required: true,
> minlength:40
> } ,
> content: {
> required: true,
> minlength:100,
> maxlength:600
> },
> evaluation: {
> required: true,
> minlength:50,
> maxlength:300
> },
> price: {
> required: true,
> digits:true
>
> },
> multi:{
> required:true
> }
> },
> messages: {
>
> }
> });
> });
>
> -->
> </script>
>
> As you can see from the code above, "title", "content", "evaluation",
> "prices" and "multi" are required. All of them are required. But there
> are additional two fields, which are "participations" and "days". Only
> one of them is required. Either "participations" or "days" is
> required. How to write this code?
>
> On Oct 12, 10:17 am, Phper <[email protected]> wrote:
> > A good clue. But I still don't know where to write the "if" statement.
> > It would be good if you can give me an example.
> >
> > On Oct 11, 10:57 pm, Don Dunbar <[email protected]> wrote:
> >
> > > Hi, if you are using the validation plugin, I believe it has a function
> > > "addMethod" that allows you to write your own method for the
> validation. It
> > > requires a name (javascript identifier), a method to check input
> against (
> > > in your case A and B would be checked for completion) and a message to
> > > display when there is an error (i.e. neither A nor B is filled out, or
> both
> > > are). You can get the details for using the "addMethod" function at the
> > > jQuery Docs page.http://docs.jquery.com/Plugins/Validation
> > > The page lists demos and the function you need is toward the bottom of
> the
> > > page.
> >
> > > The logic is fairly straight forward : when the form is being filled
> out
> > > listen for when A and B have focus, remember if either is checked or
> ignored
> > > and check to make sure both are not simultaneously filled out. Check
> this on
> > > submit as well.
> >
> > > Good luck,
> > > DED
> >
> > > On Sun, Oct 11, 2009 at 7:42 AM, Phper <[email protected]> wrote:
> >
> > > > How can I write the code in the context of Jquery validate function?
> >
> > > > On Oct 11, 12:43 pm, Don Dunbar <[email protected]> wrote:
> > > > > Hi, javascript has an 'xor' operator. It works just like 'or' in an
> 'if'
> > > > > statement except in 'xor' only one side can be true. In a normal
> 'or'
> > > > > statement either side can be true or both can. So you probably want
> to do
> > > > > something like: if ( A XOR B) { } . Then only one can be true to
> > > > continue
> > > > > if both are true the statement returns 'false'.Hope this helps.
> > > > > DED
> >
> > > > > On Sat, Oct 10, 2009 at 10:37 PM, Phper <[email protected]>
> wrote:
> >
> > > > > > There are two input fields in a form, but only one of them is
> > > > > > required, they are not required at the same time. Either A or B
> is
> > > > > > required. ( A is required OR B is required). In other words, a
> user
> > > > > > can input data to field A, or he can input data to filed B, but
> he can
> > > > > > not input data to Both A and B at the same time.
> >
> > > > > > How to implement this constraint in Jquery form validation?
>