OnFocus OnBlur与ASP.NET

时间:2012-08-14 21:19:33

标签: javascript asp.net html

我真的不明白为什么这对我这么难以开始工作:

它最终将进入ASP.NET控件,所以我相信我需要传递Javascript <textarea>控件的ID。

它不起作用。

所以,在jsFiddle中,我尝试使用First和Last名称的标准控件,但它们也不起作用。

修改

我一直在玩jsFiddle,似乎我的jsOnFocus从未被调用过(警报永远不会被激活)。但是,我能够从其他人那里运行一个小脚本,使多行文本框清晰并重置 - 我似乎无法找到一种方法从javascript函数调用它:

  function jsOnFocus(obj) {
      alert("Inside the jsOnFocus.");
      if (obj.Value==obj.defaultValue)
          obj.Value="";
  }
  function jsOnBlur(obj) {
      if (obj.Value==="")
          obj.Value=obj.defaultValue;
  }

这是HTML。

  <table>
    <tr><td>Message:</td><td>&nbsp;</td></tr>
    <tr>
      <td>&nbsp;</td>
      <td>
        <textarea name="txtMsg" rows="6" cols="30"
          onfocus="if(this.value==this.defaultValue)this.value='';" 
          onblur="if(this.value==='')this.value=this.defaultValue;">[Write your message here or call my voice number at (555) 222-1234.]</textarea>
      </td>
    </tr>
    <tr>
      <td>Test1:</td>
        <td><input type="text" name="txtTest1" 
          onfocus="jsOnFocus(txtTest1)" 
          onblur="jsOnBlur(txtTest1)" value="Test1" /></td>
    </tr>
    <tr>
      <td>Test2:</td>
  <td><input type="text" name="txtTest2" 
          onfocus="if(this.value=='Test2'){this.value=''};" value="Test2" /></td>
    </tr>
    <tr>
      <td>Test3:</td>
        <td><input type="text" name="txtTest3" 
          onfocus="if(this.value==this.defaultValue)this.value='';" 
          onblur="if(this.value==='')this.value=this.defaultValue;" value="Test3" /></td>
    </tr>
  </table>​

“消息”有效,但我想让代码在javascript中运行,我可以放在我的“js”文件中并用于其他对象。

“Test1”是尝试调用javascript,但它不起作用。

“Test2”有效,但使用“消息”中的技术。

“Test3”工作 使用“消息”中的技术。

有没有人看到如何使这个代码在javascript而不是内联html中运行?

jsFiddle链接:http://jsfiddle.net/jp2code/qCExy/10/

2 个答案:

答案 0 :(得分:1)

代码背后:

            string strUserName = "User Name";
            string strPassword = "Password";

            txtUserName.Text = strUserName;
            txtPassword.Text = strPassword;

            txtPassword.Attributes.Add("onblur", "PasswordBlur(this, '" + strPassword + "');");
            txtUserName.Attributes.Add("onblur", "UserNameBlur(this, '" + strUserName + "');");

            txtUserName.Attributes.Add("onfocus", "UserNameFocus(this, '" + strUserName + "');");
            txtPassword.Attributes.Add("onfocus", "PasswordFocus(this, '" + strPassword + "');");

Java脚本:

function UserNameBlur(txtElem, strUserName) {
    if (txtElem.value == '') txtElem.value = strUserName;
}
function PasswordBlur(txtElem, strPassword) {
    if (txtElem.value == '') txtElem.value = strPassword;
}
function UserNameFocus(txtElem, strUserName) {
    if (txtElem.value == strUserName) txtElem.value = '';
}
function PasswordFocus(txtElem, strPassword) {
    if (txtElem.value == strPassword) txtElem.value = '';
}

答案 1 :(得分:1)

我和你的小提琴玩了一下。我对jsfiddle来说是个新手,所以我不敢尝试保存我的更改。

无论如何,有一些事情会阻碍 Test1 框的工作。首先,小提琴中“JavaScript”块中的脚本会像这样添加到页面中(通过查看结果部分中的源来检查):

<script type='text/javascript'>//<![CDATA[ 
    window.addEvent('load', function() {
        function jsOnFocus(obj) {
            alert("Inside the jsOnFocus.");
            if (obj.Value==obj.defaultValue)
                obj.Value="";
        }
        function jsOnBlur(obj) {
            if (obj.Value==="")
                obj.Value=obj.defaultValue;
        }
    });//]]>  
</script>

因此,您的功能不在范围(缺少更精确的术语),您可以按照自己的意愿调用它们。

为了解决这个问题,我将脚本直接添加到Html部分作为<script>块。

javascript代码本身也存在一个小问题。 属性称为value,而不是Value

此外,我更改了输入上的onfocusonblur属性,以便将this传递给函数。您当然可以将其更改为传递id,如果需要,然后使用id查找控件。在这种情况下,请确保控件具有指定的ID。

无论如何,这里是来自小提琴的Html部分的结果代码:

<script type="text/jscript">
    function jsOnFocus(obj) {
        if (obj.value==obj.defaultValue)
            obj.value="";
    }
    function jsOnBlur(obj) {
        if (obj.value==="")
            obj.value=obj.defaultValue;
    }
</script>
<table>
  <tr><td>Message:</td><td>&nbsp;</td></tr>
  <tr>
    <td>&nbsp;</td>
    <td>
      <textarea name="txtMsg" rows="6" cols="30" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value==='')this.value=this.defaultValue;">[Write your message here or call my voice number at (555) 222-1234.]</textarea>
    </td>
  </tr>
  <tr>
    <td>Test1:</td>
      <td><input type="text" name="txtTest1" onfocus="jsOnFocus(this)" onblur="jsOnBlur(this)" value="Test1" /></td>
  </tr>
  <tr>
    <td>Test2:</td>
      <td><input type="text" name="txtTest2" onfocus="if(this.value=='Test2'){this.value=''};" value="Test2" /></td>
  </tr>
  <tr>
    <td>Test3:</td>
      <td><input type="text" name="txtTest3" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value==='')this.value=this.defaultValue;" value="Test3" /></td>
  </tr>
</table>