2016-11-10 4 views
0

У меня есть текстовое поле и два списка.Перемещение записей из одного выбора в другой в javascript

Первое окно списка заполняется из базы данных на основе того, что напечатано в текстовом поле. Элементы должны перемещаться из одного окна списка в другое, в зависимости от того, какая кнопка нажата.

Однако в данный момент, как только он это делает, оба списка, похоже, очищаются.

Может ли кто-нибудь понять, почему это так.

Ниже приводится JavaScript

$('#txtMRN').keyup(function() { 
    var s = $('#txtMRN').val(); 
    var l = s.length; 
    var lst = document.getElementById('lstMRN'); 


    if (l > 4) 
    { 
     $.ajax({ 
      url: "http://localhost:52238/PatientsGetLike.ashx?MRN=" + s, 
      success: function (result) { 
       lst.innerHTML = ''; 
       $.each(result, function (i, v) { 
        var newOption = document.createElement('option'); 

        newOption.text = v.nhs_patientid + ' - ' + v.nhs_surname + ', ' + v.nhs_firstname; 
        newOption.setAttribute('value', v.nhs_patientid); 
        newOption.className = 'mdl-list__item'; 

        lst.add(newOption); 

       }); 

       componentHandler.upgradeDom(lst); 

      } 
     }); 
    } 
}); 

$('#btnSelect').click(function() { 
    var el1 = document.getElementById('lstMRN'); 
    var el2 = document.getElementById('lstMRNSelected'); 

    $('#lstMRN :selected').each(function (i, selected) { 
     var opt   = document.createElement('option'); 

     opt.value  = selected.value; 
     opt.text  = selected.text; 
     opt.className = 'mdl-list__item'; 

     el2.add(opt); 
     // selected.remove(); 
    }); 

}); 

и HTML для страницы

<!doctype html> 
<html> 
<head> 
    <title>EPR Document Sweep </title> 
    <meta charset="utf-8" /> 
    <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"> 
    <link rel="stylesheet" href="https://code.getmdl.io/1.2.1/material.teal-amber.min.css"> 
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" /> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js" type="text/javascript"></script> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
    <link href="Styles/Styles.css" type="text/css" rel="stylesheet" /> 
</head> 
<body> 
    <div class="mdl-layout mdl-js-layout mdl-layout--fixed-header"> 
     <header class="mdl-layout__header mdl-layout__header--waterfall"> 
      <div class="mdl-layout__header-row"> 
       <div class="mdl-layout__title"> 
        EPR Document Sweep 
       </div> 
       <div class="mdl-layout-spacer"></div> 
       <div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable 
        mdl-textfield--floating-label mdl-textfield--align-right" id="searchBox"> 
        <label class="mdl-button mdl-js-button mdl-button--icon" for="srchText"> 
         <i class="material-icons">search</i> 
        </label> 
        <div class="mdl-textfield__expandable-holder"> 
         <input class="mdl-textfield__input" type="text" name="sample" id="srchText" /> 
        </div> 
       </div> 
      </div> 
      <div class="mdl-layout__header-row"> 
       <div class="mdl-layout-spacer"></div> 
       <!-- Navigation. We hide it in small screens. --> 
       <nav class="mdl-navigation mdl-layout--large-screen-only"> 
        <a class="mdl-navigation__link" href=""> 
         <i class="material-icons">link</i> 
         Intranet 
        </a> 
       </nav> 
      </div> 
     </header> 
     <div class="mdl-layout__drawer"> 
      <span class="mdl-layout-title">Document Sweep</span> 
      <nav class="mdl-navigation"> 
       <a class="mdl-navigation__link" href="#">Add MRNs</a> 
       <a class="mdl-navigation__link" href="#">Log</a> 
      </nav> 
     </div> 
     <main class="mdl-layout__content"> 
      <form action="#"> 
       <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label"> 
        <input class="mdl-textfield__input" type="text" id="txtMRN"> 
        <label class="mdl-textfield__label" for="txtMRN">MRN</label> 
       </div> 
       <div style="width:100%;" > 
        <div style="vertical-align:top; display:inline-block;"> 
         <select size="4" name="lstMRN" id="lstMRN" class="mdl-list listBox"></select> 
        </div> 
        <div style="display:inline-block; vertical-align:text-top;"> 
         <button id="btnSelect" class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored selectButtons"> 
          &gt;       
         </button> 

         <button id="btnDeselect" class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored selectButtons"> 
          &lt; 
         </button> 
        </div> 

        <div style="vertical-align:top; display:inline-block;"> 
         <select size="4" name="lstMRNSelected" id="lstMRNSelected" class="mdl-list listBox"></select> 
        </div> 
       </div>    
      </form> 
     </main> 
    </div> 
    <script src="https://code.getmdl.io/1.2.1/material.min.js"></script> 
    <script src="Scripts/Default.js"></script> 
</body> 
</html> 
+1

Попытка удалить пространство '#lstMRN: selected' –

+0

Пробовал что - удалить пространство и цикл не выполняется вообще. –

+0

Я забыл еще одну вещь: '#lstMRN option: selected' .. Вы ищете тег' option ', а не select. –

ответ

0

Форма была представляется - эффективно очищая два списка. , Измените тег формы следующим образом;

<form action="#" id="selectForm"> 

Добавьте следующий код в файл сценария

$("#selectForm").submit(function (e) { 
    e.preventDefault(); 
}); 
Смежные вопросы