html中input type="text" 的readonly 属性与asp.net服务器控件TextBox的readonly属性的js赋值、调用的小bug

我还是个刚刚入门的程序猿与大家分享下最近我做的一个项目,如有错误,请大师们指点一二!

HTML:

  <tr>
                            <td>
                                <asp:Label ID="Label5" runat="server" CssClass="Page_Label">登陆账号</asp:Label>
                            </td>
                            <td>
                                <input type="text" id="txtSignMember" runat="server"  class="Page_TextBox" readonly="readonly"/>
                                <asp:ImageButton ID="lBUser" runat="server" ImageUrl="~/Themes/Default/Images/icon_view.gif"
                                    OnClientClick="return OnSelect();"></asp:ImageButton>
                            </td>
                            <td>
                                <asp:Label ID="Label6" runat="server" CssClass="Page_Label">姓名</asp:Label>
                            </td>
                            <td>
                                <asp:TextBox ID="txtSignMemberName" runat="server" CssClass="Page_TextBox"></asp:TextBox>
                            </td>
                        </tr>

Js:

    <script type="text/javascript">

        function OnSelect() {
            var returnUserValue = window.showModalDialog("FUserSelected.aspx", "dialogHeight: 500px; dialogWidth: 400px; dialogTop: 150px; dialogLeft: 350px; edge: Raised; center: Yes; resizable: Yes; status: No;");
            if (returnUserValue != undefined) {
                var str = returnUserValue.split('|');
                document.getElementById('txtSignMember').value = str[1].toString();
                document.getElementById('txtSignMemberName').value = str[0].toString();
            }
            return false;
        }
    </script>

.cs

        billEntity.Signmember = txtSignMember.Value.Trim();
        this.txtSignMemberName.Enable=true;        
        billEntity.Signmembername = txtSignMemberName.Text.Trim();

 

实质上讲就是:当服务器控件属性为Readonly或者Enable时js可以给控件赋值,但是后台调用不到该值

主要测试

一.主要是前台写asp.net控件<asp:TextBox runat="server" >并用Enable=“false” 和Readonly=true测试

1.当txtsigmembername的enable属性为true时js给控件<asp:TextBox ....>赋值在页面上可以看到有值,观察转换前台html<input type="text"  id=".." disabled="true" value=“有值”>,结果在后台调用的时候会接收不到值,值为空

2.当txtsigmembername的Readonly属性为true时js给控件<asp:TextBox ....>赋值在页面上可以看到有值,观察转换前台html<input type="text"  id=".." readonly="readonly" value=“有值”>,结果在后台调用的时候会接收不到值,值为空

二.使用在后台加属性的方法给控件加Readonly进去     this.txtSignMemberName.Attributes.Add("readonly", "readonly");

实验结果是前台效果不变,并且在后台有值,观察转换前台html<input type="text"  id=".." readonly="readonly" value=“有值”>跟上面第一条的第二个前台是一致的。

我怀疑有能是微软的bug 或者是iE8有问题--》未测

三.使用在前台改写控件以html的形式<input type="text" runat="server" id=".." readonly="readonly" >稍微修改下后台this.txt.value的形式

实验结果是前台效果不变,并且在后台有值

最终结果二、三是可行的,结论是:微软的readonly转换上与js有冲突

 


 

阅读更多
个人分类: asp.net html
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭