Нужен пользователь, чтобы иметь возможность «добавить параметр» в список выбора

Редактирование формы, которая добавляет событие медицинской хирургии в календарь 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>

Вот изображение моей формы …
введите описание изображения здесь

Вот код Swing JSC …

    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

Решение

Похоже, 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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector