Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery execute string as function

I want to pass in a jQuery command (in the form of a string) from server-side JS to client-side js. This allows me to modify client-side DOM stuff from the server-side.

Function:

$("textArea").attr("disabled","true");

What I want to do:

$['$("textArea").attr("disabled","true")']();

Throws an error. Thoughts?

like image 429
Shazboticus S Shazbot Avatar asked Jun 17 '26 09:06

Shazboticus S Shazbot


2 Answers

You could use the eval-function on the client-side:

This will execute your javascript immediately:

eval('$("textArea").attr("disabled","true")');

But, as said in the comments, be careful with what you do as this is a very crude method.

Also, in terms of security, you don't really gain anything, because one could still open the dev-tools and remove the disabled attribute

like image 130
Kenneth Avatar answered Jun 19 '26 02:06

Kenneth


Alternatively, you could break your string up into multiple strings passed from the server. For example:

// variables passed from the server
selector = 'textArea';
method = 'attr';
arguments = ['disabled', 'true'];

Then you could evaluate it this way:

$(selector)[method](arguments[0], arguments[1]);

Of course, if the number of arguments needs to be dynamic it would get a bit trickier.

like image 33
chasingmaxwell Avatar answered Jun 19 '26 03:06

chasingmaxwell