Toggle read-only

Discussions about Forms Designer for SharePoint 2013 / 2016 and Office 365.
Locked
Devin McMahon
Posts: 4
Joined: Wed Jun 24, 2015

24 Jun 2015

I have a form with a People Picker field called Participants, on the Edit Form I would like to keep this field read-only because I have People Picker configured to show Picture and Name, and having the person's picture is important to the process.

This all works fine when i set People Picker to read-only in properties, but I would also like the user to be able to open the People Picker field to add people if desired, and I would like to do this with a button, so when you click the button if the field is read-only = true it will switch to read-only= False and vice versa.

Following the example of how to dynamically disable / enable fields , I have been going through the iterations putting code OnClick like

If fd.field('Participants').readonly(true){

fd.field('Participants').readonly(false);

} else {

fd.field('Participants').readonly(true);

}

No matter what I do, i cannot get the field to toggle back and forth from read-only TRUE / FALSE.

Is this not possible?

User avatar
rostislav
Moderator
Posts: 364
Joined: Mon Oct 19, 2015

25 Jun 2015

Please use the following code:

Code: Select all

fd.field('Participants').readonly((fd.field('Participants').readonly() == true) ? false :

Devin McMahon
Posts: 4
Joined: Wed Jun 24, 2015

25 Jun 2015

The button does not appear to be firing. I added a button to the form and put the following code OnClick:


alert('OK');
If fd.field('Participants').readonly(true){

fd.field('Participants').readonly((fd.field('Participants').readonly() == false);

} else {

fd.field('Participants').readonly((fd.field('Participants').readonly() == true);

}


It is not even firing the alert..

Devin McMahon
Posts: 4
Joined: Wed Jun 24, 2015

25 Jun 2015

I have played around a little with setting fields read-only = False for a couple of other non-People Picker fields, and these are plain text fields ...


I tried the On click event a couple of different ways

fd.field('Questions').readonly(false);

or

fd.Field('Questions').readonly((fd.Field('Questions').readonly() == false);

or

fd.Field('Questions').readonly() == false;


In all cases there is no effect on the Questions field on the form. Nothing is happening.


My syntax is sound according to dynamic form examples provided in the article as well as feedback provided here. I still cannot understand why i cannot manually "open" a field for editing with apparently well formed JS

User avatar
rostislav
Moderator
Posts: 364
Joined: Mon Oct 19, 2015

26 Jun 2015

Regarding your second post: No, your syntax is not correct, that is why your code isn't being executed. To see what's wrong with it you can open console in the web browser (in Chrome it is F12) and open the console tab. Once you click your button any errors will be output there. In case with your code in the second post it is synctatically incorrect, there is no identifier 'If', it is 'if', there are places where brackets are missing, there are places where there are additional brackets and all of this causes errors. If you want a synctatically correct version of your code:

Code: Select all

if (fd.field('PeoplePicker').readonly(true)){
	fd.field('PeoplePicker').readonly(fd.field('PeoplePicker').readonly() == false);
} else {
fd.field('PeoplePicker').readonly(fd.field('PeoplePicker').readonly() == true);
}
I'm not sure what you're trying to do with it though. If you want to achieve what you described in your first post - use the code I posted above. Regarding you third post:

Code: Select all

fd.field('Questions').readonly(false);
will make the Questions field *not* readonly, if you want to make it readonly you have to pass true, not false, i.e.

Code: Select all

fd.field('Questions').readonly(true);
fd.Field('Questions').readonly((fd.Field('Questions').readonly() == false); 
there is no 'Field' identifier, it is 'field' same goes for

Code: Select all

fd.Field('Questions').readonly() == false;
Anyway, again, if you want to achieve what you described initially, remove all synctatically incorrect code from the onclick property and use the code we posted before. Also, if you want to experiment with javascript, you can do it interactively in the console, the way I described above.

Locked
  • Information
  • Who is online

    Users browsing this forum: No registered users and 17 guests