Javascript 使用ASP.NET的OnFocus OnBlur

Javascript 使用ASP.NET的OnFocus OnBlur,javascript,asp.net,html,Javascript,Asp.net,Html,我真的不明白为什么这对我来说很难工作: 它最终将进入一个ASP.NET控件,因此我认为我需要向Javascript传递控件的ID 它不起作用 因此,在JSFIDLE中,我尝试对名字和姓氏使用标准控件,但它们也不起作用 编辑: 我一直在玩JSFIDLE,似乎从未调用过我的jsOnFocus(警报从未触发)。然而,我能够从其他人那里运行一个小脚本,使多行文本框清晰并重置-我似乎找不到一种方法从javascript函数调用它: function jsOnFocus(obj) {

我真的不明白为什么这对我来说很难工作:

它最终将进入一个ASP.NET控件,因此我认为我需要向Javascript传递
控件的ID

它不起作用

因此,在JSFIDLE中,我尝试对名字和姓氏使用标准控件,但它们也不起作用

编辑:

我一直在玩JSFIDLE,似乎从未调用过我的
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>​

信息:
[在此处留言或拨打我的语音号码(555)222-1234。]
测试1:
测试2:
测试3:
​
“Message”是有效的,但我想让代码在javascript中运行,我可以将其放在“js”文件中,并在其他对象上使用

“Test1”试图调用javascript,但它不起作用

“Test2”工作,但它不使用“Message”中的技术

“Test3”工作,并且它确实使用了“Message”中的技术

有没有人知道如何让这段代码在javascript中而不是内联html中工作

jsiddle链接:

代码隐藏:

            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 = '';
}

我和你的小提琴玩了一会儿。不过,对于JSFIDLE,我是个新手,所以我不敢尝试保存我的更改

无论如何,有一些事情会阻止Test1框工作。首先,fiddle中“JavaScript”块中的脚本被添加到页面中,如下所示(通过查看结果部分中的源代码进行检查):


JSLint在您的JSFIDLE中发现了一些错误。但即使我修复了这些问题并向jsFocus1添加了警报,它也不会在onfocus上触发,尽管将相同的警报直接添加到onfocus调用中确实会触发警报。所以我不确定那里发生了什么你救了那只鸟了吗?我感兴趣的是了解您如何纠正JSLint发现的错误。我不擅长Javascript。如果你把它作为一个答案发布,我当然不会投你反对票。我刚刚更新了我为让JSLint开心而做的修改;==应该是===并且一些双引号变成了单引号,因为它们在一个字符串中。我不确定这是否会有任何帮助,但我尝试使用javascript在用户名/密码字段上做同样的事情&然后使用占位符(很容易修复,但在某些IE v中不起作用):)看看它不会有什么害处!!!在这里,它在JS中工作,没有内联HTML。。。我一开始是在代码隐藏中做这件事的,但慢慢地,当一切都不起作用的时候,我就开始了我在原始问题中所发布的内容。当我回到项目中时,我会考虑将您的版本添加到我的项目中。这可能(也就是说,可能不会)做到这一点。我现在正在看这一点,但想对JSFIDLE站点发表评论:您所做的任何事情都可以保存,因为它在超链接中保留了某种版本控制。因此,当您保存一个版本时,它会将URL增加到下一个可用的版本号,并且允许您发布该URL。非常酷的工具!天哪,它起作用了,尽管{shock}。那个么,为什么我发现的一行javascript代码使用三(3)个等号呢<代码>如果(对象值==“”)请参见此处。谢谢你在这方面的帮助。
<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>
<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>