输入类型=“日期”在引导模式下不起作用

Posted

技术标签:

【中文标题】输入类型=“日期”在引导模式下不起作用【英文标题】:input type="date" is not working in bootstrap modal 【发布时间】:2017-01-07 13:12:37 【问题描述】:

我正在使用 grails 2.4.4,并且我在我的 gsp 页面中使用引导模式,但输入 type="date" 在 mozilla 浏览器的模式中不起作用。在 Chrome 中没问题

这是我的 gsp 页面

<!DOCTYPE html>
<html lang="en">
<head>
  <title>UtilityApp</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <script src="//cdn.jsdelivr.net/webshim/1.14.5/polyfiller.js"></script>

 
  

<script type="text/javascript">

webshims.setOptions('waitReady', false);
webshims.setOptions('forms-ext', 
	types: 'date'
	);
webshims.polyfill('forms forms-ext');


    function timeoutDiv()
     clearFields();
    setTimeout(function() 
    	$('#successMessage').fadeOut('slow');
    	$("#successMessage").html("");
    	$('#successMessage').fadeIn('slow');
    	, 5000); 
    
    function clearElements(el) 
        el=$(el).find("input,select").not("input[type='submit']");
        for (var i = 0; i < el.length; i++) 
            el[i].value = "";
            clearElements(el[i].children);
        
    

    function clearFields()
     clearElements($('#formContent'));
    
    function isNumberKey(evt) 
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode > 31 && (charCode < 48 || charCode > 57)) 
        	evt.preventDefault();
        
    
    function isAlphaNumeric(evt) 
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode==08 || charCode==127 || charCode>47 && charCode<58 || charCode>64 && charCode<91 || charCode>96 && charCode<123) 
        
        else
        	evt.preventDefault();
            

    
    function isFloatKey(evt) 
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode==08 || charCode==127 || charCode==46 || charCode>47 && charCode<58) 
        
        else
        	evt.preventDefault();
            
    
    </script>
    <style>
        .modal-header 
    padding:9px 15px;
    border-bottom:1px solid #eee;
    background-color: #bababa;
    -webkit-border-top-left-radius: 5px;
    -webkit-border-top-right-radius: 5px;
    -moz-border-radius-topleft: 5px;
    -moz-border-radius-topright: 5px;
     border-top-left-radius: 13px;
     border-top-right-radius: 13px;
 
    .modal-body 
    padding:9px 15px;
    border-bottom:1px solid #eee;
    background-color: #d7eded;
    -webkit-border-top-left-radius: 5px;
    -webkit-border-top-right-radius: 5px;
    -moz-border-radius-topleft: 5px;
    -moz-border-radius-topright: 5px;
     border-bottom-left-radius: 13px;
     border-bottom-right-radius: 13px;
 
    </style>
</head>
<body>

<div class="container">
  <h2>Enter the food bill details</h2>
  <!-- Trigger the modal with a button -->
  <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

  <!-- 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">Enter the food bill details</h4>
        </div>
        <div class="modal-body">
   <div id="successMessage" style="text-align:center;"></div>
<g:formRemote name="dataEntryForm" class="form-horizontal" update="successMessage" onComplete="timeoutDiv()" url="[controller: 'DataEntry', action:'saveAjax']">       
   
    <div class="form-group">
      <label class="control-label col-sm-5" for="employee_id">EmployeeID:</label>
      <div class="col-sm-5">
        <g:textField name='employee_id' required id='employee_id' onkeypress="isAlphaNumeric(event)"/>
      </div>
    </div>
    <div class="form-group">
      <label class="control-label col-sm-5" for="team">Team:</label>
      <div class="col-sm-5">          
        <g:select name='team' required id='team' from="$['Java','Dotnet', 'QA', 'Database']"
              noSelection="['':'---select---']"/>
      </div>
    </div>
        <div class="form-group">
      <label class="control-label col-sm-5" for="receipt_dt">Receipt Date:</label>
      <div class="col-sm-5">          
        <input type="date" name='receipt_dt' required id='receipt_dt'/>
      </div>
    </div>
        <div class="form-group">
      <label class="control-label col-sm-5" for="restaurant_name">Restaurant Name:</label>
      <div class="col-sm-5">          
        <g:textField name='restaurant_name' required id='restaurant_name'/>
      </div>
    </div>
        <div class="form-group">
      <label class="control-label col-sm-5" for="number_of_persons">Number of Persons:</label>
      <div class="col-sm-5">          
        <g:textField name='number_of_persons' required id='number_of_persons' maxlength="3" onkeypress="isNumberKey(event)"/>
      </div>
    </div>
        <div class="form-group">
      <label class="control-label col-sm-5" for="amount">Amount:</label>
      <div class="col-sm-5">          
        <g:textField name='amount' required id='amount' onkeypress="isFloatKey(event)"/>
      </div>
    </div>
        <div class="form-group">
      <label class="control-label col-sm-5" for="bill_submitted_dt">Bill Submitted Date:</label>
      <div class="col-sm-5">          
        <input type="date" name='bill_submitted_dt' required id='bill_submitted_dt'/>
      </div>
    </div>
    <div class="form-group">        
      <div class="col-sm-offset-5 col-sm-5">
        <button type="submit" class="btn btn-info btn-lg">Submit</button>
      </div>
    </div>
  </g:formRemote>
        </div></div>
      
    </div>
  </div>
  
</div>

</body>
</html>

谁能帮帮我?

【问题讨论】:

见compatibility表 ***.com/questions/22983013/… Firefox 不支持日期类型。在其他任何东西上使用像 jQuery 这样的跨浏览器库。 【参考方案1】:

我选择使用带有 Grails 3.0.x 项目的 javascript 库,而不是使用 HTML5 日期类型输入:

http://amsul.ca/pickadate.js/

正如您从演示和文档中看到的那样,它非常通用,我在格式化它生成的日期时没有问题,因此它可以很好地与 Grails 提供的数据绑定配合使用。

为输入设置样式也是轻而易举的事。

【讨论】:

【参考方案2】:

我有一个小的 grails-taglib-source,我曾经将 jquery-datepicker 与我的 grails-apps 一起使用。

您可能会发现它很有用...

grails-jquery-datepicker

我刚刚创建了 github-repository,因此可能缺少某些信息...

【讨论】:

以上是关于输入类型=“日期”在引导模式下不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Jquery 选择器在引导模式下不起作用(使用 codeigniter 加载表单)

CKEditor 链接输入在模式下不起作用

引导模式内的日期选择器中的月份选择在 Firefox 中不起作用

模式中的引导日期选择器不起作用

Android:谷歌登录在发布模式下不起作用[关闭]

Vue SPA url 在启用历史模式的情况下不起作用