代码之家  ›  专栏  ›  技术社区  ›  Sajjad Tabreez

表单提交onClick函数不在选择菜单中创建选项

  •  0
  • Sajjad Tabreez  · 技术社区  · 7 年前

     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>

    我是Javascript新手,在这个例子中,我基本上创建了一个Shipping方法页面。在“添加送货地址”链接中,单击有一个需要填写的地址表单,按“添加新地址”按钮后,所有地址表单数据都应显示在“选择”菜单选项中,如下图所示。但我不能这么做。有人能告诉我他的情况吗。这对我来说是一个巨大的帮助,我已经试过很多次了,它只处理一个字段的数据,但是对于多个字段却失败了。谢谢你

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  1
  •   Lalji Dhameliya    7 年前

    首先您创建了模型弹出窗口添加新按钮添加提交,以便它提交表单。 我已经习惯了在select中添加选项,比如。

    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>
        2
  •  1
  •   saAction    7 年前

    首先,你在用 button type="submit" <button onclick="addOption()">Add NEW</button>

    其次是 <form> 或者从中删除模型 <表格> 标记或使用 return false addOption() 功能

    map() 函数收集所有字段的值 添加选项()

    检查此代码:

    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>

    以下是“选择”中新输入的地址: