我的网站上有一个表单,当用户在提交表单之前单击提交时会运行一些基本的JS验证,但是在检查某些字段时,我收到错误“未终止的字符串文字”。
我理解这个错误是什么(在这种情况下用户在textarea中添加换行符)但我想不出一种避免/修复错误的方法。
以下是我如何申报表格 -
<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;
}
这里的任何帮助都会得到满足。
感谢。
答案 0 :(得分:4)
我的猜测$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`
}
}());