请问可否在前台脚本中改变textbox的textmode属性,
我想根据输入字符的数量来控制textbox的textmode属性,当超过一定数量时将其属性改为MultiLine.

解决方案 »

  1.   

    效率很不好,你写一个字就得call服务器,有点想GOOGLE suggest.
      

  2.   

    QUOTE:现在就是想通过js来实现
    --------------------
    2楼不是说了,你要在客户端修改TextBox的textmode,其实就是修改input的type属性,但这个属性是不可以在客户脚本端修改的。
    我想可以通过篡改HTML实现,就是将INPUT放在一个容器里,如DIV,为INPUT加个ONCHANGE事件,根据需求,随时修改这个容器的innerhtml,服务端就用request.form["name"].tostring()获取文本。
      

  3.   

    可通过onchange事件实现,当textbox失去焦点时才会去判断,并不会返回服务器,问题是怎样改变其textmode属性
      

  4.   

    恩,不能修改type属性,所以考虑一下5楼说的思想,我想应该可以。
      

  5.   

    SingleTextBox生成的HTML是<input type="text"> MultiTextBox是<textarea>,貌似不能直接改。
    放2个textBox,后台通过HiddenField取值。下面代码能实现你的要求,当然还有个问题是postback之后会回到原始状态,留给你自己搞定。
    <asp:TextBox ID="TextBox1" runat="server" onpropertychange="DisplayMulti(this);"></asp:TextBox>
    <asp:TextBox ID="TextBox2" runat="server" TextMode="MultiLine" onpropertychange="DisplaySingle(this);" style="display:none"></asp:TextBox>
    <asp:HiddenField ID="TextBoxValue" runat="server" />
    <script type="text/javascript">
        function DisplayMulti(textBox){
            if(textBox.value.length>10){
                textBox.style.display="none";
                var textArea=document.getElementById("TextBox2");
                textArea.value=textBox.value;
                textArea.style.display="block";
                textArea.focus();
            }else{
                document.getElementById("TextBoxValue").value=textBox.value;
            }
        }
        function DisplaySingle(textArea){
            if(textArea.value.length<=10){
                textArea.style.display="none";
                var textBox = document.getElementById("TextBox1");
                textBox.value=textArea.value;
                textBox.style.display="block";
                textBox.focus();
            }else{
                document.getElementById("TextBoxValue").value=textArea.value;
            }
        }
    </script>
      

  6.   

    既然都可以MultiLine那干脆改成MultiLine就好了,何必多浪费资源