javascript - 如何修复 JS 'unterminated string literal' 错误

标签 javascript

我的网站上有一个表单,当用户单击提交时,在提交表单之前运行一些基本的 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 包含一个单引号字符:'

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

关于javascript - 如何修复 JS 'unterminated string literal' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7661861/

相关文章:

javascript - 修改此node.js代码以输出.wav而不是.mp4?

用于 Markdown、Textile 等的 JavaScript 库; anchor 引用

javascript - 使用模块模式时如何将jquery源代码拆分为多个文件?

javascript - Angular $http.post 不发送任何数据

javascript - AngularJs:当第 3 方库更改 DOM 时得到通知( knockout )

php - 在 Ajax 将内容扩展到屏幕之外后如何找到页面高度?

javascript - 保存一个 JavaScript 对象?

javascript推送返回数字而不是对象

javascript - 2 列布局的高度相等,但每行的高度不同

javascript - 了解 Nodejs 文档