Bootstrap:为什么intlTelinput会改变输入元素的宽度?

时间:2017-06-07 16:52:52

标签: jquery html twitter-bootstrap

我想在订阅表单中添加一个数字电话输入,并使用intlTelInput库进行验证,这是我的代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">


  <link rel="stylesheet" type="text/css" href="flags.min.css">
  <link rel="stylesheet" type="text/css" href="css2.css">
  <link rel="stylesheet" type="text/css" href="bootstrap-social.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

  <link rel="stylesheet" href="build/css/intlTelInput.css">
  <script src="google/jquery-1.11.1.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


</head>

<div class="container">

  <div class="row flex-grow">


    <div class="col-xs-offset-1 col-xs-10 col-lg-12 col-lg-offset-0">


      <div class="row" id="grad1">
      <br>

          <div class="col-xs-offset-1 col-xs-10 col-lg-offset-4 col-lg-4">

                <form method="post" action="serv2.php" onsubmit="return submitForm(this);">

                  <fieldset>

                    <div class="row">


                        <div class="form-group phone">

                            <input type="tel" class="form-control" id="phone" name="phone" placeholder="Phone number" />
                       </div>

                        <div class="form-group country">
                            <input type="text" id="country" name="country" class="form-control" placeholder="Country" />
                        </div>


                          <div class="form-group col-lg-6 col-lg-offset-3">
                            <div>
                              <label for="bouton"><br></label>
                              <div>
                                <button type="submit" class="btn btn-default" style="background-color: #00B0F0; color:white; width: 100%;border:none;">Valider</button>
                              </div>
                            </div>
                          </div>


                    </div>

                  </fieldset>

                </form>
            </div>

      </div>


    </div>

  </div>

</div>

</html>

</body>

<script src="build/js/intlTelInput.min.js"></script>

<script>


  $("#phone").intlTelInput({

    initialCountry: "auto",
    geoIpLookup: function(callback) {
      $.get('https://ipinfo.io', function() {}, "jsonp").always(function(resp) {
        var countryCode = (resp && resp.country) ? resp.country : "";
        callback(countryCode);
      });
    },
    utilsScript: "build/js/utils.js"
  });




  var telInput = $("#phone"),
  errorMsg = $("#error-msg"),
  validMsg = $("#valid-msg");

  telInput.intlTelInput({
    utilsScript: "build/js/utils.js"
  });

</script>

问题是手机输入不像国家那样占用表格的全宽。

我尝试使用document.getElementById('phone').style.minWidth = 100%;更改它,但它删除了intlTelInput库的操作(即不再有标记图标)。

有什么想法吗?

谢谢

5 个答案:

答案 0 :(得分:1)

好的,我最终找到了答案,在文档中,只需将类intl-tel-input{width: 100%;}添加到容器中

答案 1 :(得分:1)

将此添加到您的css代码

.intl-tel-input{
  width: 100%;
}

答案 2 :(得分:0)

因此,我最近使用软件包ng2TelInput将其添加到Angular项目中。所以我发现了同样的问题,我的CSS无法更改并被卡住。

即使您在CSS类中添加.iti { width: 100%; },也无法正常工作,如文档中所述。您必须转到以下路径(请确保您完全遵循该路径):

node_modules/intl-tel-input/build/css/intlTelInput.css

并在其中添加以下代码,然后它就可以工作。

.iti { width: 100%; display:block }

答案 3 :(得分:0)

.iti.iti--allow-dropdown { width: 100% }

例如,当在引导程序intl-tel-input中使用form group/form-control时,此方法有效:

<div class="form-group">
    <label class="form-label" for="phone">Phone</label>
    <input type="tel" class="form-control form-control-lg" id="phone">
</div>

答案 4 :(得分:0)

转到intlTelInput.min.css文件并粘贴这两个类。

.intl-tel-input{
  width: 100%;
}

.iti {
    width: 100%;
}