2012-04-26 63 views
0

我有一個動態生成的文本字段(用下面的代碼):動態生成的文本框不示出由JavaScript設置的值

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的值設置爲當前日期的部分外,一切正常,Textfield不顯示任何內容,它顯示焦點時的日期選擇器。

但是,使用警報後,我發現textfield有我想要的值,它只是不顯示它。

+0

只是在黑暗中刺,但你有沒有嘗試在設置輸入值之前調用'datepicker()'? – jprofitt 2012-04-26 20:48:58

+0

@jprofitt - 那也行不通! – Namit 2012-04-26 20:58:48

+0

這段代碼是在輸入之後,還是在'$ .ready()'中包裝?如果在將輸入放入DOM之前執行此操作,則JavaScript不會看到它。 – jprofitt 2012-04-26 21:20:14

回答

1

我認爲這個問題是你做.modal()後,你必須用id #currDate,這是不合法的HTML兩種元素。沒有看到整個頁面,這很難說,但我已經看到這個問題實際上很多。 jQuery將找到第一個ID,這就是獲取你的值的元素。

確切的修復很難說沒有看到其餘的代碼。您可以在致電.modal()之前嘗試設置currDate元素的值。如果有辦法將currDate更改爲類或唯一ID,則可能有所幫助。或者,您可以將代碼更改爲類似$('#new_reciept #currDate').val(prettyDate);的代碼。

+0

我不是他們兩個單獨的元素,他們指的是同一個元素。 – Namit 2012-04-26 21:35:05

0

正如之前的海報所說,這是.datepicker()電話是空白日期。你可以添加一個參數defaultDate: new Date(),它應該允許你刪除上面的代碼並給出你想要的結果。

此外,您的輸入元素永遠不會關閉 <input type='text' class='span2' id='currDate' >應該是<input type='text' class='span2' id='currDate' />

+0

即使我註釋掉'.datepicker()'部分 – Namit 2012-04-26 21:00:05

+0

我看不到,你的輸入永遠不會關閉! – Kodi 2012-04-26 21:04:57

+0

@vari'/>'是不需要的,除非他使用XHTML,即使如此,由於瀏覽器已經將元素讀入DOM,所以在這裏並不重要。有關HTML5和自閉標籤的更多信息:http://tiffanybbrown.com/2011/03/23/html5-does-not-allow-self-closing-tags/ – AndrewR 2012-04-26 21:19:53

相關問題