2014-04-22 116 views
2

有一個包含輸入的一個DIV的值:無法獲得輸入法VAL()

enter image description here

這裏的佈局:

<div class="input-daterange input-group afc" id="datepicker-common-table"> 
    <input type="text" class="input-sm form-control" name="start" placeholder="Начальная дата"> 
    <span class="input-group-addon"> - </span> 
    <input type="text" class="input-sm form-control" name="end" placeholder="Конечная дата"> 
</div> 

這裏是一個試圖腳本在安裝後獲取數值:

$(document).on('change', "input[name='start']", function() 
{  
    $(document).on('change', "input[name='end']", function() 
    { 
     var startVal = $("#datepicker-common-table > input:text").val(); 
     var endVal = $("#datepicker-common-table > input:text").val(); 
     console.log(startVal + " - " + endVal); 
    }); 
}); 

因此,在控制檯中獲取以下內容翼輸出:

enter image description here

+0

只是擡起頭來。每次你的'input [name = start]'改變時,你都將另一個改變事件綁定到'input [name = end]'。你應該解除觸發器,然後再次附加它 – CodingIntrigue

回答

1

看,你需要使用它提供的數據一起使用changeDate事件:

$("input[name='start']").datepicker({ 

}).on("changeDate", function(e) { 
    var selectedDate = e.date; // Get the date value from the event 
    console.log("Date Changed", e.date); 
}); 

因此,爲您的使用情況(只有你想要在這兩個被選中時記錄日期):

var dates = { start: null, end: null }; 
$(".input-sm").datepicker({ 
    format: "dd-mm-yyyy", 
    todayBtn: "linked", 
    language: "en", 
    todayHighlight: true, 
    autoClose: true 
}).on("changeDate", function(e) { 
    dates[this.name] = e.date; 
    if(dates.start && dates.end) { 
     console.log("Both dates selected"); 
     console.log(dates.start); 
     console.log(dates.end); 
    } 
}); 

jsFiddle

+0

呃,謝謝,謝謝,非常非常感謝)))是工作! – Artem

2

嘗試使用:

$(document).on('change', "input[name='start'],input[name='end']", function() { 
    var startVal = $("#datepicker-common-table > input[name='start']").val(); 
    var endVal = $("#datepicker-common-table > input[name='end']").val(); 
    console.log(startVal + " - " + endVal); 
}); 

由於您使用基於您的評論引導日期選擇器,你需要使用事件changeDate()保持跟蹤當日期改變時:

$("input[name='start'],input[name='end']").on('changeDate', function() { 
    var startVal = $("#datepicker-common-table > input[name='start']").val(); 
    var endVal = $("#datepicker-common-table > input[name='end']").val(); 
    console.log(startVal + " - " + endVal); 
}); 
+0

所以,也試過了,沒有幫助:( – Artem

+0

它在這裏工作正常:http://jsfiddle.net/n73yz/ – Felix

+0

@Artem您的datepicker絕對火災'change' event? – CodingIntrigue

2

這裏是你需要什麼,你需要使用keyup事件:

$(document).ready(function(){ 
    $('#datepicker-common-table input[type="text"]').on('keyup',function(){ 



var startVal = $('#datepicker-common-table input[name="start"]').val(); 
var endVal = $('#datepicker-common-table input[name="end"]').val(); 

    alert(startVal); 

     }) 
    }); 

Here is Fiddle DEMO using Jquery 1.10.1

+0

所以也試過了,沒有幫助:( – Artem

+0

他需要得到這些值,因爲他們改變(即實時);這種靜態分配不會幫助他。 –

+0

我加了小提琴演示,其工作檢查腳本url是不是正確或你正在做一些其他的事情 –

1

請記住,所提供的回調是異步的,你不能保證你將不得不值即時訪問。您可以將值推入隊列,如果知道完成可以輪詢的任務所需的最小長度,則輪詢它。

這將輪詢對象每秒查找屬性上的非空值,一旦發現它們,它會停止,所以如果您需要持續觀看,那麼它將需要一些調整。

演示:在您的畫面Fiddle

var inputValues = { 
    start: '', 
    end: '' 
} 
$(document).on('keyup', function() {  
    var start = $(document).find("input[name='start']").val(); 
    var end = $(document).find("input[name='end']").val(); 
    inputValues.start = start; 
    inputValues.end = end; 
}); 
var interval; 
interval = setInterval(function() { 
    var fullString; 
    if(inputValues.start != '' && inputValues.end != '') { 
     console.log("Start: " + inputValues.start + " End: " + inputValues.end); 
     clearInterval(interval); 
    } 
}, 1000); 
+0

爲什麼不檢查每個'NAMES'如果你只是在推動一個活動,那麼「改變」? – CodingIntrigue

+0

@Rraham我完全重寫了它,讓我知道你對這個udpated版本的看法。 –

+0

@RGraham我發現了一些東西,看這個http://joxi.ru/WDBWUxjKTJCQDjZP6XU和這個http://joxi.ru/mTBWUxjKTJDKfenHIZM現在如何得到這個日期 – Artem