How about the Null part of my question? Any way to suppress it?
For the second part, I do not see a Null printed, but the actual If
statement itself
The reason is because that is how If
works when it has one branch and it is not true. For example
To workaround this, use the third branch of If
which tells it what to do if it can't decide between True and False
So for your first example, to eliminate the Null you can type in a value for mats
other than "1", is to give it a value to use for the second branch. Also, it is best to initialize mats
to "1" for first time, so the code becomes
mats = "1";
InputField[Dynamic[mats], String]
Dynamic[If[mats == "1",
CreateWindow[DialogNotebook[{TextCell["Not a valid matrix."], DefaultButton[DialogReturn[]]}]]
, "waiting..."], TrackedSymbols :> {mats}]
You do not need a value for the third branch (the undecided one) since now mats is initialized to some specific value.