2014-02-07 164 views
0

我使用https://github.com/eternicode/bootstrap-datepicker並希望在日期發生變化時觸發ajax調用。jQuery:輸入值返回undefined

首先通過插入changeDate事件來確定何時更改日期。然後警告在文本框中輸入到屏幕的價值...

http://bootstrap-datepicker.readthedocs.org/en/latest/events.html#changedate

這裏是我的小提琴....

http://jsfiddle.net/MangoMM/nY5C6/3/

HTML

<div class="input-group date"> 
    <input class="form-control" placeholder="Select Date" readonly="1" 
     data-provide="datepicker" data-date-format="yyyy-mm-dd" 
     data-date-start-date="today()" data-date-autoclose="true" 
     data-date-days-of-week-disabled="[2,4,6,0]" 
     data-date-today-highlight="1" name="appointment[date]" 
     type="text" id="appointment[date]" /> 
    <span class="input-group-addon"> 
     <span class="glyphicon glyphicon-calendar"></span> 
    </span> 
</div> 

jQuery的

$(".input-group.date").on('changeDate', function(){ 
    alert(event.type + " is fired: " + $('#appointment[date]').val()); 
}); 

我試過各種組合,包括$(this).val()等,但沒有運氣...

爲什麼我的輸入值顯示爲undefined?我如何獲得文本框中的值?

+0

@ T.J.Crowder - 如何是題外話的問題,它是如何沒有提供足夠的信息?我提供了一個精確顯示我的代碼的小提琴,並且提供了大量信息來回答我的問題。 – Gravy

+0

@肉汁:「在問題本身」。現在相關的代碼不依賴於非現場資源,這沒關係。小提琴是一個*附件*,而不是將代碼**置於**問題中的替代品。 SO應該獨立存在;從現在開始,jsFiddle可能會消失一小時/一天/一月/一年。 –

回答

1

你需要逃避[]與兩個反斜槓:\\。

alert(event.type + " is fired: " + $('#appointment\\[date\\]').val()); 

DEMO

Docs

使用任何元字符(如!「#$%&「()* +,。/ :; < => ?@ [] ^`{|}〜)作爲名稱的文字部分,必須用兩個反斜槓進行轉義:\\

此外,您需要通過event到事件處理程序

完整代碼

$(".input-group.date").on('changeDate', function(event){ 
    alert(event.type + " is fired: " + $('#appointment\\[date\\]').val()); 
}); 
-1

首先,你需要通過事件來發揮作用,逃離brackers

$(".input-group.date").on('changeDate', function(event){ 
    //            ^event 
    alert(event.type + " is fired: " + $('#appointment\\[date\\]').val()); 
    //            ^^  ^^ escape brackers 
}); 

DEMO

1

試試這個

console.log($(".form-control").val()); 

[]是一個屬性選擇器。

換句話說$('.form-control[data-provide="datepicker"]').val()將是有效的。

0

你使用jsf框架嗎? 如果是這樣,你可以嘗試使用Firebug並檢查元素ID。

此框架通常會在真實ID之前生成「表單:」。

您可以嘗試

$("#form\\:appointment\\[date\\]").val();