我创建了传递PHP变量的JavaScript验证。
onblur="<?= "proveriPolje(this, {$validate['txtUlica']['options']['regexp']}, '{$greske['txtUlica']}', '{$def['txtUlica']}')"; ?>"
但是在尝试验证PHP变量之前,在将它们传递给JavaScript之前设置:
onblur="<?= "proveriPolje(this, isset({$validate['txtUlica']['options']['regexp']}, '{$greske['txtUlica']})', 'isset({$def['txtUlica']}'))"; ?>"
isset()
函数被解析为字符串,有人可以帮我解决这种复杂情况吗?
答案 0 :(得分:1)
将其视为原始PHP字符串,问题出在此处:
&#34; proveriPolje(此, isset({$ validate [&#39; txtUlica&#39;] [&#39; options&#39;] [&#39; regexp&# 39;]},
使用{打破字符串是错误的地方,它无论如何都不会为函数工作,实际上你只是在写#34; isset&#34;作为输出字符串的一部分 - 尝试这样的事情(如果PHP没有设置,应该将空字符串传递给JS):
onblur="<?= "proveriPolje(this, "
. "'" . ( isset($validate['txtUlica']['options']['regexp']) ? $validate['txtUlica']['options']['regexp'] : "" ) . "'"
. ", '{$greske['txtUlica']}', "
. "'" . ( isset($def['txtUlica']) ? $def['txtUlica'] : "" ) . "'"
. ")"; ?>"
丑陋的罪,但它应该有用。
您最终应该使用JavaScript函数调用,如下所示:
proveriPolje(this, 'DATA FROM PHP VAR', 'DATA FROM PHP VAR', 'DATA FROM PHP VAR')
答案 1 :(得分:0)
你必须把你的php标签放在变量周围。 php无法知道这个javascript函数应该做什么。
onblur="proveriPolje(this, {<?= $validate['txtUlica']['options']['regexp'] ?>}, '{<?= $greske['txtUlica'] ?>}', '{<?= $def['txtUlica'] ?>}')"; ?>"
答案 2 :(得分:0)
的eval()?还是简单的回声? 既然你不打印它,这只是一个字符串 顺便说一句这是一个文件,由PHP或单个HTML处理?我知道它是一个愚蠢的问题,但我刚看到一个qiestion代码从html运行,这是问题的起源。