0

我在父页面中有一个需要由 iframe 调用的函数,然后此函数会更新 iframe 中的表单值。我可以正常调用该函数,但表单值更新不起作用

我设置了一个警报以查看父函数是否可以看到输入值,但返回未定义,所以我假设我没有正确访问 ID

这是我的代码尝试在分成三个文本框的字段中自动初始化今天的日期

主要js函数

 window.autoPartialDateBox = function(htmlID) {
if ( !jQuery('#'+htmlID+"_mm").val() && !jQuery('#'+htmlID+"_dd").val() && !jQuery('#'+htmlID+"_yy").val() ) {
            var myDate = new Date();    
            jQuery('#'+htmlID+"_mm").val(myDate.getMonth()+1 );                      
            jQuery('#'+htmlID+"_dd").val(myDate.getDate() ); 
            jQuery('#'+htmlID+"_yy").val(myDate.getFullYear() );               
} }

框架

    <script type="text/javascript"> 
   $(function () {
        // this will populate the partial date box          
           $("#someElement").live("change", function() {
               if ($(this).val() == 'trigger') {
                window.top.autoPartialDateBox('partial_date_box');
               }

           });

        });
    </script>

Action <select name="someElement" id="someElement" class="valid">
    <option value="" selected="">Select an option</option> 
    <option value="trigger">Trigger</option>            
</select>

Day <input name="stop_dd_2747_mm" type="text" id="stop_dd_2747_mm">
Month <input name="stop_dd_2747_dd" type="text" id="stop_dd_2747_dd" >
Year <input name="stop_dd_2747_yy" type="text" id="stop_dd_2747_yy" >
4

1 回答 1

0

如果您认为问题在于访问 ID,可能是因为您试图在 jQuery 选择器中“构建”ID。我认为更好的解决方案是将函数传递给父元素,然后遍历节点树以找到您的输入字段。

功能:

 window.autoPartialDateBox = function(parentElm) {  

     $nodes = jQuery(parentElm).children('input[type=text]');

     if (!$nodes[0].val() && !$nodes[1].val() && !$nodes[2].val()) {


        var myDate = new Date();    
        $nodes[0].val(myDate.getMonth()+1 );                      
        $nodes[1].val(myDate.getDate() ); 
        $nodes[2].val(myDate.getFullYear() );               
  } 
 }

为您的输入字段添加一个容器:

<div id="input_container">
   Day <input name="stop_dd_2747_mm" type="text" id="stop_dd_2747_mm">
   Month <input name="stop_dd_2747_dd" type="text" id="stop_dd_2747_dd" >
   Year <input name="stop_dd_2747_yy" type="text" id="stop_dd_2747_yy" >
</div>

我还没有测试过,但这是我会做的一般方法。如果您尝试在选择器中构建字符串,我不知道 jQuery 的行为如何。这似乎不是问题,但你永远不知道。

编辑在 jQuery 命名空间中声明的“节点”

于 2012-07-18T16:13:50.123 回答