表单提交onClick功能未在选择菜单中创建选项

时间:2018-08-24 03:52:25

标签: javascript jquery html twitter-bootstrap

 function getOption(){
    var select = document.getElementById("dynamic-select");
    if(select.options.length > 0) {
        var option = select.options[select.selectedIndex];
        alert("Text: " + option.text + "\nValue: " + option.value);
    } else {
        window.alert("Select box is empty");
    }
}

function addOption(){
    var select = document.getElementById("dynamic-select");
    select.options[select.options.length] = new Option('New Element', '0', false, false);
}
<!DOCTYPE html>
<html>
  <head>
    <title>Place Autocomplete Address Form</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

    <style>
        .pac-container {
            z-index: 10000 !important;
        }
    </style>
  </head>

  <body>
    <div class="container">
        <div class="row">
            <div class="col-md-6">
                <h2>Shipping Method</h2>
                <form>
                    <div class="form-group">
                        <div class="radio">
                            <label>
                                <input type="radio" name="optradio" checked>Deliver To *</label>
                        </div>
                    </div>



                    <div class="form-group">

                        <select id="dynamic-select">
                            <option value="None">Select Shipping</option>

                        </select>
                    </div>

                    <div class="form-group">
                        <a data-toggle="modal" data-target="#myModal">Add Delivery Address</a>
                    </div>

                    <!-- Modal -->
                    <div class="modal fade" id="myModal" role="dialog">
                        <div class="modal-dialog">

                            <!-- Modal content-->
                            <div class="modal-content">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                                    <h4 class="modal-title"><span><i class="fa fa-map-marker" aria-hidden="true"></i></span>Add your Delivery Details</h4>
                                </div>
                                <div class="modal-body">
                                    <div class="panel panel-primary">
                                        <div class="panel-heading">
                                          <h3 class="panel-title">Address</h3>
                                        </div>
                                        <div class="panel-body">
                                         <input id="autocomplete" placeholder="Enter your address"
                                            onFocus="geolocate()" type="text" class="form-control">
                                            <br>
                                         <div id="address">
                                            <div class="row">
                                               <div class="col-md-6">
                                                  <label class="control-label">Street address</label>
                                                  <input class="form-control" id="street_number">
                                               </div>
                                               <div class="col-md-6">
                                                  <label class="control-label">Route</label>
                                                  <input class="form-control" id="route">
                                               </div>
                                            </div>
                                            <div class="row">
                                               <div class="col-md-6">
                                                  <label class="control-label">City</label>
                                                  <input class="form-control field" id="locality">
                                               </div>
                                               <div class="col-md-6"> 
                                                  <label class="control-label">State</label>
                                                  <input class="form-control" id="administrative_area_level_1">
                                               </div>
                                            </div>
                                            <div class="row">
                                               <div class="col-md-6">
                                                  <label class="control-label">Zip code</label>
                                                  <input class="form-control" id="postal_code">
                                               </div>
                                               <div class="col-md-6">
                                                  <label class="control-label">Country</label>
                                                  <input class="form-control" id="country">
                                               </div>
                                            </div>
                                         </div>
                                         <button type="submit" onclick="addOption()">Add NEW</button>
                                      </div>
                                        </div>            
                                </div>
                                <div class="modal-footer">
                                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>

  </body>
</html>

我是Java语言的新手,在这个示例中,基本上我已经创建了一个“运输方法”页面。在“添加交货地址”链接中,单击时,需要填写一个地址表格,然后按“添加新”按钮,所有地址表格数据应出现在选择菜单选项中,如下图所示。但是我做不到。有人可以给我启发一下他吗?这对我来说将是巨大的帮助。我尝试了很多次,它只能用于一个字段数据,但是对于多个字段则失败。谢谢

enter image description here

2 个答案:

答案 0 :(得分:1)

第一件事,您正在使用button type="submit",它将回发,只需使用<button onclick="addOption()">Add NEW</button>

第二个<form>要么从<form>标记中删除模型,要么在return false函数中使用addOption()

第三次使用jquery map()函数来收集addOption()侧的所有字段值

检查此代码:

function getOption() {
    var select = document.getElementById("dynamic-select");
    if (select.options.length > 0) {
        var option = select.options[select.selectedIndex];
        alert("Text: " + option.text + "\nValue: " + option.value);
    } else {
        window.alert("Select box is empty");
    }
}

function addOption() {
    var select = document.getElementById("dynamic-select");

    var newListItem = $("#myModal input").map(function () { return $(this).val(); }).get();
            

    select.options[select.options.length] = new Option(newListItem, '0', false, false);

    $('#myModal').modal('toggle');
    return false;
}
<link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class="container">
    <div class="row">
        <div class="col-md-6">
            <h2>Shipping Method</h2>
            <form>
                <div class="form-group">
                    <div class="radio">
                        <label>
                            <input type="radio" name="optradio" checked>Deliver To *
                        </label>
                    </div>
                </div>



                <div class="form-group">

                    <select id="dynamic-select">
                        <option value="None">Select Shipping</option>

                    </select>
                </div>

                <div class="form-group">
                    <a data-toggle="modal" data-target="#myModal">Add Delivery Address</a>
                </div>

                <!-- Modal -->
                <div class="modal fade" id="myModal" role="dialog">
                    <div class="modal-dialog">

                        <!-- Modal content-->
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" data-dismiss="modal">&times;</button>
                                <h4 class="modal-title"><span><i class="fa fa-map-marker" aria-hidden="true"></i></span>Add your Delivery Details</h4>
                            </div>
                            <div class="modal-body">
                                <div class="panel panel-primary">
                                    <div class="panel-heading">
                                        <h3 class="panel-title">Address</h3>
                                    </div>
                                    <div class="panel-body">
                                        <input id="autocomplete" placeholder="Enter your address" type="text" class="form-control">
                                        <br>
                                        <div id="address">
                                            <div class="row">
                                                <div class="col-md-6">
                                                    <label class="control-label">Street address</label>
                                                    <input class="form-control" id="street_number">
                                                </div>
                                                <div class="col-md-6">
                                                    <label class="control-label">Route</label>
                                                    <input class="form-control" id="route">
                                                </div>
                                            </div>
                                            <div class="row">
                                                <div class="col-md-6">
                                                    <label class="control-label">City</label>
                                                    <input class="form-control field" id="locality">
                                                </div>
                                                <div class="col-md-6">
                                                    <label class="control-label">State</label>
                                                    <input class="form-control" id="administrative_area_level_1">
                                                </div>
                                            </div>
                                            <div class="row">
                                                <div class="col-md-6">
                                                    <label class="control-label">Zip code</label>
                                                    <input class="form-control" id="postal_code">
                                                </div>
                                                <div class="col-md-6">
                                                    <label class="control-label">Country</label>
                                                    <input class="form-control" id="country">
                                                </div>
                                            </div>
                                        </div>
                                        <button type="button" onclick="addOption()">Add NEW</button>
                                    </div>
                                </div>
                            </div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                            </div>
                        </div>
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>

这是select中新输入的地址:

答案 1 :(得分:1)

首先创建模型弹出窗口,然后添加新按钮,添加提交,以便提交表单。 我曾经用来添加选项来选择类似的东西。

var select = document.getElementById("dynamic-select");
var option = document.createElement("option"); 
option.text = "your text";
option.value = "your value"

function getOption(){
    var select = document.getElementById("dynamic-select");
    if(select.options.length > 0) {
        var option = select.options[select.selectedIndex];
        alert("Text: " + option.text + "\nValue: " + option.value);
    } else {
        window.alert("Select box is empty");
    }
}

function addOption(){
    var select = document.getElementById("dynamic-select");
    var option = document.createElement("option");
    
    var data = getFormData();
    var text = data.address + data.street + " " + data.route + " " +data.city + " " +data.postcode
    option.text = text;
    option.value = "address" 
    select.add(option);
$('#myModal').modal('hide');
}

function getFormData(){
debugger;
var obj = new Object();
obj.address = document.getElementById("autocomplete").value; 
obj.street = document.getElementById("street_number").value;
obj.route =  document.getElementById("route").value;
obj.city =  document.getElementById("locality").value;
obj.state =  document.getElementById("administrative_area_level_1").value;
obj.postcode =  document.getElementById("postal_code").value;
return obj;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
  <head>
    <title>Place Autocomplete Address Form</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

    <style>
        .pac-container {
            z-index: 10000 !important;
        }
    </style>
  </head>

  <body>
    <div class="container">
        <div class="row">
            <div class="col-md-6">
                <h2>Shipping Method</h2>
                <form>
                    <div class="form-group">
                        <div class="radio">
                            <label>
                                <input type="radio" name="optradio" checked>Deliver To *</label>
                        </div>
                    </div>



                    <div class="form-group">

                        <select id="dynamic-select">
                            <option value="None">Select Shipping</option>

                        </select>
                    </div>

                    <div class="form-group">
                        <a data-toggle="modal" data-target="#myModal">Add Delivery Address</a>
                    </div>

                    <!-- Modal -->
                    <div class="modal fade" id="myModal" role="dialog">
                        <div class="modal-dialog">

                            <!-- Modal content-->
                            <div class="modal-content">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                                    <h4 class="modal-title"><span><i class="fa fa-map-marker" aria-hidden="true"></i></span>Add your Delivery Details</h4>
                                </div>
                                <div class="modal-body">
                                    <div class="panel panel-primary">
                                        <div class="panel-heading">
                                          <h3 class="panel-title">Address</h3>
                                        </div>
                                        <div class="panel-body">
                                         <input id="autocomplete" placeholder="Enter your address"
                                            onFocus="" type="text" class="form-control">
                                            <br>
                                         <div id="address">
                                            <div class="row">
                                               <div class="col-md-6">
                                                  <label class="control-label">Street address</label>
                                                  <input class="form-control" id="street_number">
                                               </div>
                                               <div class="col-md-6">
                                                  <label class="control-label">Route</label>
                                                  <input class="form-control" id="route">
                                               </div>
                                            </div>
                                            <div class="row">
                                               <div class="col-md-6">
                                                  <label class="control-label">City</label>
                                                  <input class="form-control field" id="locality">
                                               </div>
                                               <div class="col-md-6"> 
                                                  <label class="control-label">State</label>
                                                  <input class="form-control" id="administrative_area_level_1">
                                               </div>
                                            </div>
                                            <div class="row">
                                               <div class="col-md-6">
                                                  <label class="control-label">Zip code</label>
                                                  <input class="form-control" id="postal_code">
                                               </div>
                                               <div class="col-md-6">
                                                  <label class="control-label">Country</label>
                                                  <input class="form-control" id="country">
                                               </div>
                                            </div>
                                         </div>
                                         <button type="button" onclick="addOption()">Add NEW</button>
                                      </div>
                                        </div>            
                                </div>
                                <div class="modal-footer">
                                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>

  </body>
</html>