2016-07-22 2 views
-1

Моя система имеет функцию редактирования. Я могу вводить текст с апострофом, но, когда я пытаюсь открыть редактирующий модал, он больше не работает.Невозможно повторно открыть модальный, когда ввод имеет апостроф (')

Я использовал функцию javascript для передачи значения в editModal. Некоторые параметры содержат текст. Поэтому я завернул переменную в \"\".

Вот мой код.

Вывод строк. Который содержит JavaScripts функции, которая вызывает editModal

<?php 
    $sql = $db->prepare("SELECT * from tbl_street 
         WHERE streetStatus <> 2"); 

      $sql->execute(); 
     while($result = $sql->fetch(PDO::FETCH_ASSOC)) 
     { 
      $id   = $result['streetID']; 
      $streetName = $result['streetName']; 
      $status  = ($result['streetStatus']==1) ? "checked" : ""; 


      echo " 
      <tr> 
      <td>$id</td> 
      <td>$streetName</td> 
      <td> 
      <input type='checkbox' onchange='switchStatus($id,this)' data-toggle='toggle' $status> 
      </td> 
      <td> 
      <div class='btn-group' role='group'> 
       <input type='button' value='Manage' onclick='Xmanage($id,\"$streetName\")' class='btn btn-info'> 
       <input type='button' value='Remove' onclick='Xdelete($id)'     class='btn btn-danger'> 
      </div> 
      </td> 
      </tr> 
      "; 
     } 
     ?> 

Вот код для редактирования и Modal

<div class="form-group"> 
<!-- Modal --> 
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
    <div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <!--HEADER--> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
     <h4 class="modal-title" id="myModalLabel"><h3>Manage Lot</h3></h4> 
     </div> 

     <form action="" method="POST"> 
     <!--BODY--> 
     <div class="modal-body"> 

     <input name="theID"id="theID" type="text" class="form-control" > 
     <div class="row"> 
      <div class="row"> 
      <div class="col-md-5"> 
      <label for="streetName">Street Name</label> 
      <input name="estreetName" id="strtnm"pattern="[a-zA-Z0-9]+[a-zA-Z0-9 ]+" type="text" class="form-control" required placeholder="Street Name"> 
      </div> 
     &nbsp; 
     </div> 
     <!--FOOTER--> 
     <div class="modal-footer"> 
     <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
     <button type="submit" name="editSubmit"class="btn btn-primary">Save</button> 
     </div> 
    </div> 
    </div> 
    </div> 

    <?php 
    try{ 
    if(isset($_POST['editSubmit'])){ 
     $id      = $_POST['theID']; 
     $streetName  = $_POST['estreetName']; 
     $sql = $db->prepare(" 
     UPDATE tbl_street 
     SET `streetName`  = :sName 
     WHERE streetID  = :id 
     "); 

     $sql->execute(array(
     ":sName"   => $streetName, 
     ":id"     => $id 
    )); 
     echo"<meta http-equiv='refresh' content='0'>"; 
    } 
    }catch(Exception $e) 
    { 
    echo $e; 
    } 
    ?> 
+0

Вы не должны генерировать свой HTML как строку PHP. Напишите нормальный HTML, затем эхо в любых значениях, которые вам нужны из PHP. –

+0

Reworded: ваш вопрос о JS. Ваш PHP-код не имеет значения (и отвлекает, и трудно читается для разработчиков не PHP). Опубликуйте исправленный результат HTML, который получает браузер. Подсказка: просмотреть источник или инструменты разработчика. – Phrogz

+0

Я бы вывел ... data-streetname = \ "". Htmlspecialchars ($ streetName). "\" .... в теге HTML, а затем используйте this.dataset.streetname в JS – progysm

ответ

0

Для более чистого выхода PHP не эхо HTML с PHP потому вы будете смущены, где побег. Лучший способ - встраивать php в html, который читаем и помогает при работе с командой разработчиков без поддержки.

ли что-то вроде этого

<?php 
$sql = $db->prepare("SELECT * from tbl_street WHERE streetStatus <> 2"); 

$sql->execute(); 
while($result = $sql->fetch(PDO::FETCH_ASSOC)){ 
$id   = $result['streetID']; 
$streetName = $result['streetName']; 
$status  = ($result['streetStatus']==1) ? "checked" : ""; 
?> 

<tr> 
    <td><?= $id ?></td> 
    <td><?= $streetName ?></td> 
    <td> 
     <input type="checkbox" onchange="switchStatus($id,this)" data-toggle="toggle" <?= $status ?>> 
    </td> 
    <td> 
     <div class="btn-group" role="group"> 
      <input type="button" value="Manage" onclick="Xmanage(<?= $id ?>, <?= $streetName ?>)" class="btn btn-info"> 
      <input type="button" value="Remove" onclick="Xdelete(<?= $id ?>)" class="btn btn-danger"> 
     </div> 
    </td> 
</tr> 
"; 
<?php 
} 
?> 

Если вы должны повторить HTML код использовать одинарные кавычки и HTML сохранит двойные кавычки.

Смежные вопросы