如何修复JS'未终止的字符串文字'错误

时间:2011-10-05 13:15:38

标签: javascript

我的网站上有一个表单,当用户在提交表单之前单击提交时会运行一些基本的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;
}

这里的任何帮助都会得到满足。

感谢。

1 个答案:

答案 0 :(得分:4)

我的猜测$form_name包含单引号字符:'

首先,您应该使用htmlentitiesjson_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`
    }
}());