2017-02-20 7 views
0

Редактирование формы, которая добавляет событие медицинской операции в Календарь Google. В форме (список хирургов) выберите поле, которое вытаскивает его значения параметра из файла index.php. Я пытаюсь изменить это, чтобы пользователь мог «добавить хирурга» в этот список выбора, введя имя в текстовое поле и нажав кнопку «добавить».Нужно, чтобы пользователь мог «добавить опцию» в список выбора

Моим решением было добавить текстовое поле и кнопку под полем «список хирургов». Набрав имя, нажав кнопку отправки, вы напишите имя нового хирурга в файл XML. Затем я собирался выбрать «список хирургов», чтобы выбрать значение «вытащить его» из файла XML.

Мне удалось создать окно ввода и кнопку, которая добавит новое имя хирурга в файл XML, но теперь у меня есть две кнопки отправки. Когда я пытаюсь добавить это новое имя хирурга в файл XML, он думает, что я заполнил всю форму, и я пытаюсь ее отправить. Как отправить новое значение параметра в файл XML без отправки формы? Любая информация оценена.

Вот текущее поле выбора (что не тянет из файла XML пока), и мой XML поле добавления ниже ...

<input type="hidden" name="action" value="<?php if($edit) echo 'edit';else echo 'insert';?>"> 
    <input type="hidden" name="event_id" value="<?php if($edit) echo $event_data['id'];else echo '0';?>"> 
    <div class="col-md-6 col-sm-6 col-xs-12"> 
    <div class="form-group"> 
    <label for="event_title">Surgeon Name <span class="required">*</span></label> 
    <select name="event_title" id="event_title" class="form-control required"> 
    <option value="BERASI"> BERASI</option> 
    <option value="BERGHOFF"> BERGHOFF</option> 
    <option value="BIGGS"> BIGGS</option> 
    <option value="BORUS"> BORUS</option> 
    <option value="BURKE"> BURKE</option> 
    <option value="CANNONE"> CANNONE</option> 
    <option value="DEARBORN"> DEARBORN</option> 
    </select> 
    </div> 
    </div> 

    <div class="col-md-6 col-sm-6 col-xs-12"> 
    <div class="form-group"> 
    <form action="index.php" method="post"> 
    <label for="surgeon" >Surgeon</label> 
    <input type="text" name="surgeon" class="btn btn-secondary"/> 
    <input type="submit" name="ok" value="add"/> 
    </div> 
    </div> 

Текущая кнопку отправки на форме, что мое добавление сталкиваясь с здесь ...

<input type="hidden" name="action" value="<?php if($edit) echo 'edit';else echo 'insert';?>"> 
    <input type="hidden" name="event_id" value="<?php if($edit) echo $event_data['id'];else echo '0';?>"> 
    <div class="col-md-6 col-sm-6 col-xs-12"> 
    <div class="form-group"> 
    <label for="event_title">Surgeon Name <span class="required">*</span></label> 
    <select name="event_title" id="event_title" class="form-control required"> 
    <option value="BERASI"> BERASI</option> 
    <option value="BERGHOFF"> BERGHOFF</option> 
    <option value="BIGGS"> BIGGS</option> 
    <option value="BORUS"> BORUS</option> 
    <option value="BURKE"> BURKE</option> 
    <option value="CANNONE"> CANNONE</option> 
    <option value="DEARBORN"> DEARBORN</option> 
    </select> 
    </div> 
    </div> 

    <div class="col-md-6 col-sm-6 col-xs-12"> 
    <div class="form-group"> 
    <form action="index.php" method="post"> 
    <label for="surgeon" >Surgeon</label> 
    <input type="text" name="surgeon" class="btn btn-secondary"/> 
    <input type="submit" name="ok" value="add"/> 
    </div> 
    </div> 

Вот образ моей формы ... enter image description here

Вот свинг АО код ...

import java.awt.BorderLayout; 
    import java.awt.Cursor; 
    import java.awt.Dimension; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 
    import java.awt.event.KeyAdapter; 
    import java.awt.event.KeyEvent; 
    import java.awt.event.WindowAdapter; 
    import java.awt.event.WindowEvent; 
    import java.awt.event.WindowListener; 
    import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.FileOutputStream; 
    import java.io.ObjectInput; 
    import java.io.ObjectInputStream; 
    import java.io.ObjectOutput; 
    import java.io.ObjectOutputStream; 
    import java.net.URL; 

    import javax.swing.Box; 
    import javax.swing.BoxLayout; 
    import javax.swing.ComboBoxModel; 
    import javax.swing.JComboBox; 
    import javax.swing.JEditorPane; 
    import javax.swing.JFrame; 
    import javax.swing.JLabel; 
    import javax.swing.JOptionPane; 
    import javax.swing.JPanel; 
    import javax.swing.JScrollPane; 
    import javax.swing.JTextField; 
    import javax.swing.event.HyperlinkEvent; 
    import javax.swing.event.HyperlinkListener; 

    public class MemComboBoxDemo extends JFrame { 

     protected MemComboBox urlComboBox = new MemComboBox(); 

     public MemComboBoxDemo() { 
     super(); 
     setSize(300, 100); 
     getContentPane().setLayout(new BorderLayout()); 

     JPanel p = new JPanel(); 
     p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); 
     p.add(new JLabel("Address")); 

     urlComboBox.load("addresses.dat"); 
     ComboBoxListener lst = new ComboBoxListener(); 
     urlComboBox.addActionListener(lst); 

     MemComboAgent agent = new MemComboAgent(urlComboBox); 

     p.add(urlComboBox); 
     getContentPane().add(p, BorderLayout.NORTH); 

     WindowListener wndCloser = new WindowAdapter() { 
      public void windowClosing(WindowEvent e) { 
      urlComboBox.save("addresses.dat"); 
      System.exit(0); 
      } 
     }; 
     addWindowListener(wndCloser); 

     setVisible(true); 
     urlComboBox.grabFocus(); 
       } 

     class ComboBoxListener implements ActionListener{ 
     public void actionPerformed(ActionEvent evt) { 
      System.out.println(urlComboBox.getSelectedItem()); 
     } 
     } 

     public static void main(String argv[]) { 
     new MemComboBoxDemo(); 
     } 
    } 

    class MemComboAgent extends KeyAdapter { 
     protected JComboBox comboBox; 

     protected JTextField editor; 

     public MemComboAgent(JComboBox c) { 
     comboBox = c; 
     editor = (JTextField) c.getEditor().getEditorComponent(); 
     editor.addKeyListener(this); 
     } 

     public void keyReleased(KeyEvent e) { 
     char ch = e.getKeyChar(); 
     if (ch == KeyEvent.CHAR_UNDEFINED || Character.isISOControl(ch)) 
      return; 
     int pos = editor.getCaretPosition(); 
     String str = editor.getText(); 
     if (str.length() == 0) 
      return; 

     for (int k = 0; k < comboBox.getItemCount(); k++) { 
      String item = comboBox.getItemAt(k).toString(); 
      if (item.startsWith(str)) { 
      editor.setText(item); 
      editor.setCaretPosition(item.length()); 
      editor.moveCaretPosition(pos); 
      break; 
      } 
     } 
     } 
    } 

    class MemComboBox extends JComboBox { 
     public static final int MAX_MEM_LEN = 30; 

     public MemComboBox() { 
     super(); 
     setEditable(true); 
     } 

     public void add(String item) { 
     removeItem(item); 
     insertItemAt(item, 0); 
     setSelectedItem(item); 
     if (getItemCount() > MAX_MEM_LEN) 
      removeItemAt(getItemCount() - 1); 
     } 

     public void load(String fName) { 
     try { 
      if (getItemCount() > 0) 
      removeAllItems(); 
      File f = new File(fName); 
      if (!f.exists()) 
      return; 
      FileInputStream fStream = new FileInputStream(f); 
      ObjectInput stream = new ObjectInputStream(fStream); 

      Object obj = stream.readObject(); 
      if (obj instanceof ComboBoxModel) 
      setModel((ComboBoxModel) obj); 

      stream.close(); 
      fStream.close(); 
     } catch (Exception e) { 
      System.err.println("Serialization error: " + e.toString()); 
     } 
     } 

     public void save(String fName) { 
     try { 
      FileOutputStream fStream = new FileOutputStream(fName); 
      ObjectOutput stream = new ObjectOutputStream(fStream); 

      stream.writeObject(getModel()); 

      stream.flush(); 
      stream.close(); 
      fStream.close(); 
     } catch (Exception e) { 
      System.err.println("Serialization error: " + e.toString()); 
     } 
     } 
    } 
+0

Самый простой способ если пользователь добавляет новое имя хирурга, обработайте это как часть вашего действия отправки (добавив его в поле с этого момента), вместо того, чтобы пытаться сделать это «на лету». –

+0

У вас бы появился пример, который я мог видеть? Любая информация ценится! –

ответ

0

Похоже, что Jquery пригодится в этой ситуации. Что вы можете сделать, это просто проверить, когда пользователь нажимает на кнопку Добавить, вы идете получить текущее значение поля, и используя Javascript/Jquery вы добавить его в поле выбора:

<input type="text" class="addingElement"> 
<button class="addingButton">Add</button> 
<select name="event_title" id="event_title" class="form-control required"> 
    <option value="BERASI"> BERASI</option> 
    <option value="BERGHOFF"> BERGHOFF</option> 
    <option value="BIGGS"> BIGGS</option> 
    <option value="BORUS"> BORUS</option> 
    <option value="BURKE"> BURKE</option> 
    <option value="CANNONE"> CANNONE</option> 
    <option value="DEARBORN"> DEARBORN</option> 
</select> 
<script> 
$(document).ready(function(){ 
    $('.addingButton').on('click', function(){ 
     var newElement = $('.addingElement').val(); 
     $('#event_title').append('<option></option>').attr('value', newElement).html(newElement); 
    }) 
}); 
</script> 
+0

Спасибо! Я постараюсь сделать это сегодня вечером. Я дам вам знать, как это происходит. Еще раз спасибо! –

+0

Вам нужно понять, что Java и Javascript - это две разные вещи. Вы не можете использовать swing в JAvascript. Я попробую ответить на jsfiddle. – Nicolas

+0

Там это работает https://jsfiddle.net/o0qc8wvc/ – Nicolas

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