2015-12-20 25 views
2

我的工作与榆树的一个项目,但目前我卡在以下问题:我想从榆树更新产生的输入字段榆树 - 从JS更新日期输入字段不起作用

newDate address = 
    header 
     [ id "header" ] 
     [ input 
      [ id "datePicker" 
      , autofocus False 
      , type' "date" 
      , onEnter address Add 
      ] 
      [] 
     ] 

我最初的想法是将我的.elm代码与html,我成功这样做,使我能够创建自定义js脚本来与dom进行交互。

但是,在添加以下脚本(将日期设置为当前日期)时,它似乎没有更新日期字段。

$(document).ready(function() { 
     var now = new Date(); 

     var day = ("0" + now.getDate()).slice(-2); 
     var month = ("0" + (now.getMonth() + 1)).slice(-2); 

     var today = now.getFullYear()+"-"+(month)+"-"+(day) ; 

     $('#datePicker').val(today); 
    }); 

但是,如果我在浏览器控制台本身执行此代码,它确实有效。

有什么想法?

在此先感谢!

-K

补充:要求榆树融入HTML

<html> 

    <head> 
    <title>Embedded Elm</title> 
    <script type="text/javascript" src="elm.js"></script> 
    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 
    </head> 

    <body> 
     <div id="main" style="width:50%; height:400px;"></div> 
    </body> 

    <script type="text/javascript"> 
    var mainDiv = document.getElementById('main'); 
    Elm.embed(Elm.Main, mainDiv); 

    $(document).ready(function() { 
     var now = new Date(); 

     var day = ("0" + now.getDate()).slice(-2); 
     var month = ("0" + (now.getMonth() + 1)).slice(-2); 

     var today = now.getFullYear()+"-"+(month)+"-"+(day) ; 
     $('#datePicker').val(today); 
    }); 


    </script> 

</html> 
+0

你可以请你分享你如何包括这个脚本和榆树应用程序在你的HTML?我在猜测这个脚本是有效的,但是在榆树应用程序第一次渲染之前,dom ready事件就被解雇了。 – grumpyjames

+0

对我来说,它在Chrome中运行正常,但不在Firefox中运行。我猜你的JS在表单进入DOM之前运行。 – Adrian

回答

1

我想,我最初的直觉是正确的,即Elm.embed的行为比我们或许会更喜欢异步和在元素出现在DOM中之前,回调函数将被触发。值得一提的是,在调试器中观察事件的顺序来验证是这种情况。

编辑:具有刚刚有了一个快速的看自己,它看起来第一榆树框架可以通过调用同步呈现给embed。你确信你的应用程序的初始状态导致了表单组件的包含?

在任何情况下,如果你想达到什么是当前日期初始化场一次,这个问题可能是有用的:Initialize model with current date

编辑2:另一件事可能会造成一些问题包括<script>标签<body>标签关闭。这个问题似乎表明,这不是一个好主意;也许你也可以尝试在<body>关闭之前加入它?