页面回发时,javascript输入字段被清除

时间:2014-03-24 07:05:27

标签: javascript jquery html asp.net vb.net

我正在使用VB ASP.net并返回结束为SQL我必须从日历中选择日期我使用javaScript日历作为客户端编码和其他控件,当我的页面获得回发时我丢失了日历值我被选中但我必须保留日期,直到我点击这里的保存按钮是TextBox输入

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

我使用过Hidden Field,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>

有人能帮助我吗?

4 个答案:

答案 0 :(得分:1)

添加runat =&#34;服务器&#34;你的意见!

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

答案 2 :(得分:0)

尝试覆盖您的页面在标记中加载这样的事件。

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

     }

这将重置帖子后的日期。让我知道这是否有效。

答案 3 :(得分:0)

修改输入标记,如下所示添加runat = server

<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"
            });