无法获得输入法val()的值

时间:2014-04-22 07:15:11

标签: jquery

有一个包含输入的DIV:

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

4 个答案:

答案 0 :(得分: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 );
});

由于您根据评论使用了Bootstrap datepicker,因此您需要使用 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 );
});

答案 1 :(得分: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

答案 2 :(得分:1)

请记住,提供的回调是异步的,您不能保证您可以立即访问这些值。您可以将值推送到队列中,如果您知道完成可以轮询的任务所需的最小长度,则轮询它。

这将每秒轮询对象,在to属性上查找非空值,一旦找到它,它就会停止,所以如果你需要连续观看,那么它将需要一些调整。

演示: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);

答案 3 :(得分: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