Ok tried to understand your problem exactly... This is what is happening:
$ echo '{"value": "New", "onclick": "CreateNewDoc()"}' | jq | grep value
jq - commandline JSON processor [version 1.5-1-a5b5cbe]
Usage: jq [options] <jq filter> [file...]
[rest of output is omitted for brevity]
The important thing to notice here is the usage line (emphasis is mine):
Usage: jq [options] <jq filter> [file...]
The filter is not optional, if you don't give one, jq tries to parse the rest of the command line as its filter and throws an error. A workaround for your case here is:
$ echo '{"value": "New", "onclick": "CreateNewDoc()"}' | jq '.' | grep value
"value": "New",
which indeed greps the "value" line as the filter passed is '.' - this just pretty prints the json content, but that's far from the best use of jq. If you wish to get only this line it would be better do:
$ echo '{"value": "New", "onclick": "CreateNewDoc()"}' | jq '.value'
"New"
If you wish to get the output without quotes then you can add add -r option to jq like so:
$ echo '{"value": "New", "onclick": "CreateNewDoc()"}' | jq -r '.value'
New
from jq --help:
-r output raw strings, not JSON texts;
that's a little introduction to jq, that's probably not enough to solve your problem at all but as you didn't specify your problem I can't help more than that.