2015-05-03 2 views
0

Мне нужна ваша помощь, чтобы добавить html, php-код внутри переменной javascript. Я пробовал одиночные кавычки и избегаю его «внутри var using /, но он не работает.html и php внутри переменной javascript

<script type='text/javascript'> 
 
var field = 
 
'<div class="form-group"> 
 
<label for="charge"><?php echo $lang['charge-formlabel']; ?></label> 
 
<input type="text" id="charge" name="charge[]" placeholder="<?php echo $lang['placeholder-addcharge']; ?>" /> 
 
<p class="help-block"> 
 
<?php echo $lang['charge-form-description']; ?> 
 
</p> 
 
</div> 
 
<div class="form-group"> 
 
<label for="description"><?php echo $lang['description-formlabel']; ?></label> 
 
<input type="text" id="description" name="description[]" placeholder="<?php echo $lang['placeholder-adddescription']; ?>" /> 
 
<p class="help-block"> 
 
<?php echo $lang['description-form-description']; ?> 
 
</p> 
 
</div> 
 
<div class="form-group"> 
 
<label for="value"><?php echo $lang['value-formlabel']; ?></label> 
 
<input type="text" id="value" name="value[]" placeholder="<?php echo $lang['placeholder-addvalue']; ?>" /> 
 
<p class="help-block"> 
 
<?php echo $lang['value-form-description']; ?> 
 
</p> 
 
</div>'; 
 
</script>

+0

Вы не можете использовать многострочные строки в JavaScript, использование конкатенация – vasilenicusor

+0

Вы должны рассмотреть добавить некоторые основные отступы, чтобы сделать код немного более читаемым. –

ответ

1

Чтобы экранировать кавычки в строку в JavaScript вы должны использовать обратную косую черту. В результате, ваш PHP код будет выглядеть следующим образом, когда scaped:

$lang[\'charge-formlabel\']; 

Пожалуйста, прими также во учесть, что если вы хотите написать многострочные строки в JavaScript вам нужно будет добавить ответную реакцию в конце каждая строка также.

var field = '<div class="form-group">\ 
<label for="charge"><?php echo $lang[\'charge-formlabel\']; ?></label>'; 
+0

Хорошая точка с использованием символа \ в конце строки на многострочной строке – vasilenicusor

0

Я исправил ваш код.

<script type='text/javascript'> 
    var field = 
    '<div class="form-group">'+ 
    '<label for="charge"><?php echo $lang['charge-formlabel']; ?></label>' + 
    '<input type="text" id="charge" name="charge[]" placeholder="<?php echo $lang['placeholder-addcharge']; ?>" />' + 
    '<p class="help-block"><?php echo $lang['charge-form-description']; ?></p>' + 
    '</div>'+ 
    '<div class="form-group">'+ 
    '<label for="description"><?php echo $lang['description-formlabel']; ?></label>'+ 
    '<input type="text" id="description" name="description[]" placeholder="<?php echo $lang['placeholder-adddescription']; ?>" />'+ 
    '<p class="help-block"><?php echo $lang['description-form-description']; ?></p>' + 
    '</div>' + 
    '<div class="form-group">' + 
    '<label for="value"><?php echo $lang['value-formlabel']; ?></label>' + 
    '<input type="text" id="value" name="value[]" placeholder="<?php echo $lang['placeholder-addvalue']; ?>" />' + 
    '<p class="help-block"><?php echo $lang['value-form-description']; ?></p>'+ 
    '</div>'; 
</script> 

Пожалуйста, см Google JavaScript Style Guide

Не делайте этого:

var myString = 'A rather long string of English text, an error message \ 
       actually that just keeps going and going -- an error \ 
       message to make the Energizer bunny blush (right through \ 
       those Schwarzenegger shades)! Where was I? Oh yes, \ 
       you\'ve got an error and all the extraneous whitespace is \ 
       just gravy. Have a nice day.'; 

пробельных в начале каждой строки не может быть безопасно сжаты во время компиляции; пробел после косой черты приведет к сложным ошибкам; и в то время как большинство движков сценариев поддерживают это, он не является частью ECMAScript.

Используйте конкатенацию вместо:

var myString = 'A rather long string of English text, an error message ' + 
    'actually that just keeps going and going -- an error ' + 
    'message to make the Energizer bunny blush (right through ' + 
    'those Schwarzenegger shades)! Where was I? Oh yes, ' + 
    'you\'ve got an error and all the extraneous whitespace is ' + 
    'just gravy. Have a nice day.'; 
Смежные вопросы