2011-10-05 2 views
3

폼이 제출되기 전에 사용자가 제출을 클릭 할 때 기본 JS 유효성 검사를 실행하는 양식이 있지만 'unterminated string literal'오류가 발생합니다. 일부 필드를 확인할 때.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; ?>')"> 

을 그리고 여기에 내가 나에게 문제의 원인이되는 필드 확인하고 방법입니다 - 여기에 어떤 도움이 appriciated 될 것이다

var your_query = document.forms['enquiry']['your_query'].value 
if(your_query === ''){ 
    result = false; 
} 

합니다.

감사합니다.

+0

일반적으로 JavaScript 표현식에서 사용되는 이스케이프 값에 의해 발생하지만, 코드에 어떤 존재하지 않습니다되는 리터럴 종결되지 않은 문자열 당신 게시 된 경우 (미친 양식 이름이없는 경우) - 오류가 발생한 위치를 게시 했습니까? –

+0

이 경우의 오류는 사용자가 텍스트 영역 인 'your_query'필드에 줄 바꾸기를하기 때문입니다. 여러분은 오류가 AJAX 페이지로 전달할 객체를 만들고있는 시점에서 처음 생각한 것보다 조금 뒤늦게 생성되고 있습니다. PHP를 통해 vaule을 작성하여 줄 바꿈을하는 것은 실제로 무엇입니까? 이는 줄 바꿈의 단순한 존재가 아니라 이것을 유발합니다. –

+0

@Dave Newton - return validate_form ('')'JavaScript 식에서 이스케이프 처리되지 않은 값이 사용됩니까? –

답변

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)

다음, 돈 ' 그 onsubmitintrinsic event attribute을 사용하고 그것에 양식 이름을 전달하지 마십시오. 자바 스크립트 파일을 처리하는 적절한 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` 
    } 
}()); 
+0

수정을해야했습니다. 'json_encode'는 JavaScript 주위에 따옴표가 필요하지 않습니다. –

+0

제안에 감사드립니다. 나는 당신이 onSumbit()을 사용하지 않는다고 말한 것을 가지고 갈 것입니다 (아마도 오늘은 아닙니다!),하지만 'json_encode()'는 원래의 오류 (감사)를 지나치게합니다. 그러나 이제는 PHP의 모든 값이 래핑됩니다 (/ "{value} /"). , 'json_decode()'는 내가 생각한대로 반환하지 않습니다. 거기에 어떤 제안? –

+0

@Daveid Gard - 나는 PHP의 측면에서 당신이 의미하는 바를 따르지 않습니다. –

관련 문제