2013-07-18 3 views
1

Я использую плагин datepicker JQuery (который отлично работает). Затем мне нужно извлечь «день недели» с выбранной даты.foo.substr дает ошибку «Не является функцией»

При использовании foo.substring(0,3) для назначения первых трех символов datepicker('getDate') я получаю: TypeError foo.substr is not a function.

$(function() { 
    $("#textDatepicker").datepicker(); 
}); 

function selectedDay() { 
    var foo = $("#textDatepicker").datepicker('getDate'); 

    //IF USED.... alert(foo); 
    //retuens (for example)..... 
    //"Thu Jul 18 00:00:00 GMT-0400 (Eastern Standard Time)" 

    var weekday = foo.substr(0, 3) 
    document.getElementById("dayofweek").innerHTML = "The day of the week selected is: " + weekday; 
} 

<head> 
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
<script src="https://jquery-blog-js.googlecode.com/files/SetCase.js" type="text/javascript"></script> 
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"/> 
</head> 
<body> 
Select Date:&nbsp;<input type="text" id="textDatepicker" onchange="selectedDay();"> 
<br><br> 
<span id="dayofweek">Selected day of week replaces this</span> 
</body> 

Я также наклеены на: jsfiddle

Любая помощь будет оценена .. Заранее спасибо ...

+2

Почему вы загружаете как JQuery 1.9.1 и 1.10. 2 (latest.min.js)? – Sergio

+0

Вы на 100% уверены, что это строка, но не объект, который вы пытаетесь взять подстроку? – Jonast92

+0

Я предполагаю, что .substr работает только с строками, и вы пытаетесь работать с объектом jQuery. –

ответ

6
var foo = $("#textDatepicker").datepicker('getDate'); 

возвращает объект Date, а не строка, и не имеет метод substr()

FIDDLE

Вы можете решить, удалив этот неприглядный встроенный обработчик событий и делают:

$("#textDatepicker").datepicker({ 
    onSelect: function() { 
     var date = $(this).datepicker('getDate'); 
     var day = $.datepicker.formatDate('DD', date); 
     $('#dayofweek').html(day); 
    } 
}); 

FIDDLE

+2

'foo.toString(). Substr (0, 3);' будет делать это. –

+0

@SheikhHeera - Отлично, но строение объекта даты и извлечение материала из строки на самом деле не похоже на правильный способ работы с объектами даты! – adeneo

1
$("#textDatepicker").datepicker('getDate'); 

является объектом. Вы не можете взять подстроку объекта с помощью substr.

6

Применение

var weekday = foo.toString().substr(0, 3); 

DEMO.

+1

четкий и прозрачный –

0

foo.substr (0,3) является виновником. Он возвращает объект даты, и вы можете сделать substr на объекте даты. Вы могли бы решить эту проблему с помощью кода ниже

function selectedDay() { 
    var foo = $("#textDatepicker").datepicker('getDate'); 

    //IF USED.... alert(foo); 
    //retuens (for example)..... 
    //"Thu Jul 18 00:00:00 GMT-0400 (Eastern Standard Time)" 

    var weekday = foo.getDay(); 
    document.getElementById("dayofweek").innerHTML = "The day of the week selected is: " + weekday; 
} 

0

называется методом toString(); перед вызовом subString(); как foo.toString().subString(start,length); Работал для меня

Смежные вопросы