页面加载后,隐藏字段中不存在任何值

时间:2014-02-07 12:14:43

标签: javascript asp.net

在下面的代码中,我已经在页面加载中编码。在此我已经在hidRegExp.Value中存储了正则表达式。现在我必须将此值存储在隐藏字段中。现在在javascript中我必须在textbox中验证用户输入。但是当我输入一个值时它显示空白警报。但是我想在alert.Pls中显示正则表达式帮助我去做这个。 代码背后:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        if (FieldTypeInfo == FieldType.TextBox)
        {
            TblSearch.Visible = false;
            TblDate.Visible = false;
            tblDropd.Visible = false;
            TblChk.Visible = false;
            lblText.Text = FieldLabel;
            //txtreq.Enabled = this.IsMandatory;

            string strRegularExp = string.Empty;

            if (ListOfRegularExpression != null)
            {
                for (int iRow = 0; iRow < ListOfRegularExpression.Count; iRow++)
                {
                    strRegularExp += ListOfRegularExpression[iRow].ToString() + "~~";
                    hidRegExp.Value = strRegularExp;
                    if (iRow == ListOfRegularExpression.Count - 1)
                    {                               
                        strRegularExp = strRegularExp.TrimEnd("~~".ToCharArray());
                        txtField.Attributes.Add("onblur", "javascript:ValidateRegExp('" + txtField.ToString() + "');");
                    }
                }
            }

            hidRegExp.Value = strRegularExp;
            lbl.Text = "The value of the HiddenField control is " + hidRegExp.Value + ".";
        }}

代码:

<script type="text/javascript">


    function ValidateRegExp(txtInput) {
        var hiddenValue = document.getElementById("<%=hidRegExp.ClientID%>").value;
        alert("hiddenValue" + hiddenValue+".");
        var mySplitResult = new Array();
        mySplitResult = hiddenValue.split("~~");

        for (i = 0; i < mySplitResult.length; i++) {
            //document.write("<br /> Array[" + i + " ]= " + mySplitResult[i]);
             var re = new RegExp(mySplitResult[i]);
            if (txtInput.match(re)) {
                alert("Successful match");            
            } else {
                alert("No match");
            }
        }     
    }

 </script>
<asp:HiddenField ID="hidRegExp" runat="server" EnableViewState= "true" >
</asp:HiddenField >
<asp:Label ID="lbl" runat="server"></asp:Label>

2 个答案:

答案 0 :(得分:0)

最初ListOfRegularExpression将为空,因此控件不会进入if (ListOfRegularExpression != null)并且HiddenField.Value将无法设置。

答案 1 :(得分:0)

我以前遇到过这个问题。老实说,我不记得我是如何解决它的,但我尝试了一些事情。他们在这里:

要显示隐藏字段,请在隐藏字段中将ClientIdMode添加为静态,如

<asp:HiddenField ID="hidRegExp" runat="server" EnableViewState="true" ClientIDMode="Static"></asp:HiddenField>

在JavaScript中,使用:

document.getElementById("hidRegExp");

如果这不起作用,请尝试使用以下方法:

1)尝试在脚本之前移动隐藏字段。

2)尝试将其作为标签并在JavaScript中使用它。

希望这有帮助。