繁体   English   中英

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

[英]How do I fix JS 'unterminated string literal' error

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

这里的任何帮助都会受到关注。

谢谢。

我猜是$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)); ?>)">

另请参阅将PHP字符串传递给Javascript变量(包括转义换行符)

接下来,不要使用onsubmit 内部事件属性 ,也不要将表单名称传递给它; 在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`
    }
}());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM