2013-05-01 5 views
0

У меня есть эта страница, и я пытаюсь подтвердить дату, которая находится из текстового поля ввода и текущей даты. Если дата из поля ввода более поздняя, ​​чем текущая дата, необходимо подтвердить поле подтверждения, чтобы подтвердить, что они указывают правильную дату. Таким образом, кнопка «ОК» должна завершить подачу данных, а кнопка «Отменить» должна вернуть их обратно в форму AJAX.Javascript confirm() не работает правильно

if($('sdate' > curdate)) { 
    confirm("The date you chose " + curdate + "is in the future OK to continue"); 
} 

Я также хотел 'sdate' появляться в подтверждающим поле вместо curdate, но всякий раз, когда я пытаюсь что больше не появляется форма.

+0

Что такое 'curdate'? И что будет '$ (true)' или '$ (false)' yield? Это jQuery? – Bergi

ответ

0

Я был в состоянии заставить его работать с этим

var d=$('sdate').value; 

if(d > curdate)) { 

    var dates confirm("The date you chose " + d + "is in the future OK to continue"); 
    if(!dates) return false; 
} 
2

Вместо

$('sdate' > curdate) 

вы, вероятно, хотел

$('sdate').val() > curdate 

, что это сравнение дат (как строки, но он должен работать, если даты хорошо сформированы, которые в случае для входа даты типа или ввода текста типа со стандартным плагином).

Обратите внимание, что вы не используете возвращаемое значение из вызова confirm. Вы, как правило, сделать что-то вроде

if ($('sdate').val() > curdate) { 
    if (confirm("someText")) { 
     // do something 
    } 
} 
+0

Чтобы быть более конкретным относительно «хорошо сформированного», я не думаю, что сравнение строк будет работать, если обе даты не будут «yyyy-mm-dd». –

+0

@CrayonViolent Ну, именно так они сформированы с вводом даты типа. –

+0

См. Http://www.w3.org/TR/html-markup/input.date.html –

1

Вы должны сделать это:

var date1 = new Date($('#sdate').val()); 
var date2 = new Date(curdate); 
if (date1 > date2) { 
    confirm("The date you chose " + curdate + "is in the future OK to continue"); 
} 
  • Элемент не полностью завернуты. Это должно быть так $('#sdate')
  • '#' для идентификатора отсутствует. Не уверен, если это идентификатор или класс. Если класс, добавьте '.' вместо #
0

В вашем текущем скрипте вызов confirm() фактически ничего не делает.

Что бы вы ни пытались сделать, вам необходимо включить следующее в той или иной форме.

if(confirm("The date you chose " + curdate + "is in the future OK to continue")) 
    //Do stuff 

Goin' на то, что вы опубликовали и ответ на отправленный @dystroy вы, вероятно, ищете

if($("#sdate").val() > curdate && confirm("The date you chose " + curdate + "is in the future OK to continue") 
    //Do stuff 

В приведенном выше сценарии оба условия присутствуют в одной условной. В ответ на @ dystroy я включил вызов .val(). Другое изменение в том, что оно было предположить, что вы ищете для элемента с идентификатором = «SDATE», поэтому селектор включить символ ID #

Edit (после того, как комментарий ФП в) - Updated based on this stackoverflow post

Если вы «вновь пытается предотвратить отправку формы, то вы должны прикрепить функцию к форме в манере, подобной этой

<form name="myForm" onsubmit="return validateMyForm();"> 

После того, как вы связаны события вы могли бы обновить свой код, чтобы что-то вроде

if($("#sdate").val() > curdate && confirm("The date you chose " + curdate + "is in the future OK to continue") 
    return true; 
else 
    return false; 

Это должно только отправить форму, если подтверждение возвращает true и выполняется неравенство даты.

+0

это то, что у меня есть, что работает в настоящее время \t \t если ($ ('SDATE'). Значение> CURDATE) { \t \t \t подтверждения ("Дата вы выбрали" + CURDATE + «будет в будущем OK, чтобы продолжить «); \t \t} все работает, кроме случаев, когда я нажимаю отменить на будущую дату .. он все равно сохранит. использование && сделало форму вообще не отправленной. – Lynx

+0

@ user2267668 Я обновил решение в соответствии с вашим комментарием. – CBusBus

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

  • Нет связанных вопросов^_^