2014-03-24 2 views
1

Я работаю с VB ASP.net и обратно Заканчиваю на SQL в том, что я должен выбрать дату Из календаря для этого Я использовал календарь javaScript в качестве клиентского бокового кодирования и других элементов управления, когда моя страница получить постбэк я потерял календарь значение, которое я был выбран, но я должен держать дату, пока я нажимаю кнопку сохранить в том, что TextBox InputПоле ввода javascript очищается при пересылке страницы

<input name="txtpodate" id="inputField00" type="text" 
         style="width:28px; font-family:Segoe UI; font-size:14pt; height: 20pt; background-color: #3366FF;" 
         onclick ="a();" /> 

Я использовал Скрытое поле, ONBLUR, OnFocus события, но ее не работает ,

функция календаря:

<link rel="stylesheet" type="text/css" media="all" href="jsDatePick_ltr.min.css" /> 

<script type="text/javascript" src="jsDatePick.min.1.3.js" ></script> 

<script type="text/javascript" id ="calender"> 

     function setCurrentDate() { 

      var d = new Date(); 
      var month = new Array(); 
      month[0] = "JAN"; 
      month[1] = "FEB"; 
      month[2] = "MAR"; 
      month[3] = "APR"; 
      month[4] = "MAY"; 
      month[5] = "JUN"; 
      month[6] = "JUL"; 
      month[7] = "AUG"; 
      month[8] = "SEP"; 
      month[9] = "OCT"; 
      month[10] = "NOW"; 
      month[11] = "DEC"; 

      var mnth = month[d.getMonth()]; 
      var convertedStartDate = new Date(); 
      var day = convertedStartDate.getDate(); 
      var year = convertedStartDate.getFullYear(); 
      var shortStartDate = day + "-" + mnth + "-" + year; 

      document.getElementById("inputField00").text = shortStartDate; 
      document.getElementById("inputField").value = shortStartDate; 
      document.getElementById("inputField0").value = shortStartDate; 


     } 


function a() { 

      new JsDatePick({ 
       useMode: 2, 
       target: "inputField00", 
       dateFormat: "%d-%M-%Y" 


      }); 

      new JsDatePick({ 
       useMode: 2, 
       target: "inputField", 
       dateFormat: "%d-%M-%Y" 

      }); 
      new JsDatePick({ 
       useMode: 2, 
       target: "inputField0", 
       dateFormat: "%d-%M-%Y" 

      }); 

      setCurrentDate(); 

     }; 


     </script>    
    </asp:Content> 

Может кто-нибудь мне помочь?

+0

Рассмотрите возможность использования asp.net Calendar control. :) –

+0

Спасибо Lim, но Календарь asp.net слишком велик, он занимает слишком много места. Я могу использовать календарь в событии onclick, как поп, возможно? – Malar

ответ

0

изменить свой входной тег, как показано ниже, чтобы добавить RUNAT = Сервер

<input runat="server" name="txtpodate" id="inputField00" type="text" 
         style="width:28px; font-family:Segoe UI; font-size:14pt; height: 20pt; background-color: #3366FF;" 
         onclick ="a();" /> 

затем отредактировать сценарий, чтобы получить новый сгенерированный ClientId из поля ввода

в

document.getElementById("<%= inputField00.ClientID %>").text = shortStartDate; 

и

new JsDatePick({ 
       useMode: 2, 
       target: "<%= inputField00.ClientID %>", 
       dateFormat: "%d-%M-%Y" 
      }); 
+0

, если я ставлю runat = "server" означает, что он не показывает календарь – Malar

+0

проверяет отредактированный ответ, я также дал код для изменения кода внутри функции(). – alaasdk

+0

Его работа ThankYou Так много ... :) :) – Malar

1

Добавить runat = "server" на ваш вход!

+0

Если я поставлю runat = «сервер», он не покажет календарь – Malar

+0

Не могли бы вы подробнее рассказать о своем ответе? – samy

+0

для значения, которое должно быть передано серверу, ему необходимо добавить runat = "server" в поле ввода, без этого данные не будут отправляться на сервер, и нет возможности для его присутствия после отправки назад , Это логичное первое место для просмотра. –

0

Попробуйте переустановить событие вашей страницыLoad как это в вашей разметке.

function pageLoad(sender, args) 
    { 
     setCurrentDate(); 

    } 

Это сбросит дату после сообщения назад. Сообщите мне, если это работает.

+0

Это не работает :( – Malar

1

Поля формы HTML по умолчанию не сохраняют свое состояние после обратной передачи, поскольку HTTP является апатридом. Вы можете создать скрытое значение (которое вы пытались) и установить его значение из C#. В Javascript в вашей загрузке документа проверьте, имеет ли значение скрытое поле, если да, то установите для него календарь, иначе ничего не делайте.

  1. Добавить скрытое поле в вас .aspx страницу:

    <asp:HiddenField ID="hidden" runat="server" /> 
    
  2. Изменение значения этого поля в коде-за:

    protected void Page_Load(object sender, EventArgs e) 
        { 
        hidden.Value = CurrentDate; 
        } 
    
  3. Написать следующий скрипт получить доступ к значению и поместить его в любую переменную:

    <script type="text/javascript"> 
        if (document.getElementById("MainContent_hidden") != undefined) { 
         var hiddenVal = document.getElementById("MainContent_hidden").value; 
         document.getElementById("inputField00").text = hiddenVal; 
         document.getElementById("inputField").value = hiddenVal; 
         document.getElementById("inputField0").value = hiddenVal; 
        } 
    

+0

Спасибо Ash, я не знаю, как установить значение календаря из кода, за которым я попытался Response.Write ("txtpodate") Но его не работает, есть ли у вас какие-либо идеи по этому поводу? – Malar

+0

@Malar Добавлен простой код. Надеюсь, это поможет – Ashutosh

+0

Я создал скрытое поле типа , и я работаю в VB, поэтому в загрузке страницы i добавлено Hidden1.Value = DateTime.Today() и в стороне исходного кода i addad if (document.getElementById ("Hidden1")! = undefined) { var hiddenVal = document.getElementById ("Hidden1"). value; document .getElementById ("inputField00"). text = hiddenVal; document.getElementById ("inputField"). value = hiddenVal; document.getElementById ("inputField0"). v alue = hiddenVal; } – Malar

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