Я хочу показать Окно предупреждающего сообщения, когда выбранная дата совпадает с датой базы данных в средстве выбора даты и времени.
Несмотря на то, что WebMethod работает нормально, мой код сейчас каждый раз, когда я выбираю, предупреждающее сообщение всегда появляется без проверки.
Test.aspx.cs
[System.Web.Services.WebMethod]
public static string GetDateFromDB(DateTime compareDate)
{
string selectedDate = compareDate.ToString("yyyy/MM/dd");
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LoginDBConnectionString1"].ConnectionString);
SqlCommand com = new SqlCommand("SELECT * from Holiday where Date='" + selectedDate + "'", conn);
SqlDataAdapter sqlDa = new SqlDataAdapter(com);
DataTable dt = new DataTable();
sqlDa.Fill(dt);
if (dt == null || dt.Rows.Count == 0)
return "NG";
else
return "OK";
}
Test.aspx
<link href = "http://code.jquery.com/ui/1.9.2/themes/smoothness/jquery-ui.css" rel = "stylesheet" />
<input type='text' class='date' id = "datepicker" autocomplete = "off">
<script src = "http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src = "http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script>
jQuery(function ($) {
$("#datepicker").datepicker({
onSelect: function (dateText) {
alert("Selected date: " + dateText + "; input's current value: " + this.value);
$(this).change();
$.ajax({
type: "POST",
url: "Test.aspx/GetDateFromDB",
data: '{ "compareDate" : "' + dateText + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
//success: OnSuccess,
//failure: function (response) {
// alert(response.d);
//}
});
},
}
).on("change", function () {
display("Got change event from field");
});
function display(msg) {
$("<p>").html(msg).appendTo(document.body);
}
});
</script>





Он всегда предупреждает, потому что предупреждающее сообщение находится в событии onChange. Вам нужно переместить это на Успех вызова AJAX. Ниже приведен ваш отредактированный код.
Редактировать : Проверить условие в соответствии с возвращаемым значением кода (например, "ОК" и "НГ").
<link href = "http://code.jquery.com/ui/1.9.2/themes/smoothness/jquery-ui.css" rel = "stylesheet" />
<input type='text' class='date' id = "datepicker" autocomplete = "off">
<script src = "http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src = "http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script>
jQuery(function ($) {
$("#datepicker").datepicker({
onSelect: function (dateText) {
$(this).change();
$.ajax({
type: "POST",
url: "Test.aspx/GetDateFromDB",
data: '{ "compareDate" : "' + dateText + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data)
{
if (data == "OK")
{
alert("Selected date: " + dateText + "; input's current value: " + this.value);
}
},
//failure: function (response) {
// alert(response.d);
//}
});
},
}
).on("change", function () {
display("Got change event from field");
});
function display(msg) {
$("<p>").html(msg).appendTo(document.body);
}
});
</script>
Примечание. Вышеуказанные изменения не тестировались. Пожалуйста, напишите комментарий, если он не работает.
В функции успеха: я изменил этот код, и он отлично работает. Благодарим вас за помощь и экспертный совет. успех: function (response) { if (response.d == "OK") { //alert("Выбранная дата: " + dateText + "; текущее значение ввода: " + this.value); alert("Сегодня выходной!!!"); } }
Если это полезно и сработало, отметьте это как ответ. Спасибо.
alert должен быть внутри функции успеха, а не непосредственно внутри функции изменения.