动态生成的文本字段不显示javascript设置的值

时间:2012-04-26 20:37:59

标签: php javascript jquery

我有一个动态生成的文本字段(使用以下代码):

echo "<div><table width='100%'><tr>
         <td>
             Date: <input type='text' class='span2' id='currDate'>
         </td><td rowspan='2'></td></tr></table>";

用户按下按钮后会生成此字段,此按钮链接到javascript:

$('#receipts button').live('click', function(){
        var id = this.id;
        $.ajax({
            type: "post", url: "receipt-stock.php", data: "production_detail_id="+id,
            success: function(data) {
                $('.modal-body').html(data);
                $('#new_receipt').modal('show');
                var myDate = new Date();
                var prettyDate = myDate.getDate()+'-' +(myDate.getMonth()+1)+'-'+myDate.getFullYear();
                $("#currDate").val(prettyDate);
                $('#currDate').datepicker({ dateFormat: 'dd-mm-yy' });
            }
        });
    });

从javascript可以看出我正在显示一个模态,其中包含上面代码中的文本字段。一切正常,除了我将#currDate的值设置为当前日期的部分,文本字段在显示焦点时没有显示任何显示日期选择器的内容。

然而,在使用警报时,我发现文本字段具有我想要的值,它只是不显示它。

2 个答案:

答案 0 :(得分:1)

我认为问题出在.modal()之后,您有两个ID #currDate的元素,它们不是有效的HTML。没有看到整个页面,很难肯定地说,但实际上我已经看到了这个问题。 jQuery将找到第一个ID,这是获取值集的元素。

如果没有看到其余的代码,很难说确切的修复。在调用.modal()之前,您可以尝试设置currDate元素的值。如果有办法将currDate更改为类或唯一ID,这可能会有所帮助。或者,您可以将代码更改为$('#new_reciept #currDate').val(prettyDate);

答案 1 :(得分:0)

正如之前的一张海报所说,.datepicker()电话会消除日期。你可以添加一个参数defaultDate: new Date(),它可以让你删除上面的代码并给出你想要的结果。

此外,您的输入元素永远不会关闭 <input type='text' class='span2' id='currDate' >应为<input type='text' class='span2' id='currDate' />