我的网站上有一个表单,当用户单击提交时,在提交表单之前运行一些基本的 JS 验证,但是在检查某些字段时我收到错误“未终止的字符串文字”。
我明白这个错误是什么(在这种情况下用户在文本区域中添加换行符)但我想不出避免/修复它的方法。
这是我声明表单的方式 -
<form id="<?php echo $form_name; ?>"
name="<?php echo $form_name; ?>"
class="standard-form"
method="POST" action=""
onsubmit="return validate_form('<?php echo $form_name; ?>')">
下面是我如何检查给我带来麻烦的字段 -
var your_query = document.forms['enquiry']['your_query'].value
if(your_query === ''){
result = false;
}
如有任何帮助,我们将不胜感激。
谢谢。
最佳答案
我的猜测是 $form_name
包含一个单引号字符:'
首先,您真的应该使用 htmlentities
和 json_encode
转义该输出:
<form id="<?php echo htmlentities($form_name); ?>"
name="<?php echo htmlentities($form_name); ?>"
class="standard-form"
method="POST"
action=""
onsubmit="return validate_form(<?php echo htmlentities(json_encode($form_name)); ?>)">
另见 Pass a PHP string to a Javascript variable (including escaping newlines)
接下来,不要使用那个onsubmit
intrinsic event attribute并且不要将表单名称传递给它;在 JavaScript 文件中使用适当的 DOM 脚本(或 jQuery)和事件处理:
(function() {
var form = document.getElementById("<?php echo json_encode($form_name); ?>");
form.addEventListener('submit', onSubmit, false);
function onSubmit() {
// manipulate variable `form` as necessary
// without having to pass around a `form_name`
}
}());
关于javascript - 如何修复 JS 'unterminated string literal' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7661861/