1

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

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

它不起作用。

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

编辑:

我一直在玩 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>​

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

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

“Test2”有效,但它没有使用“Message”中的技术。

“Test3”有效,它确实使用了“Message”中的技术。

有谁知道如何使这段代码在 javascript 而不是内联 html 中工作?

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

4

2 回答 2

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 = '';
}
于 2012-08-15T17:44:19.117 回答
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不是Value

此外,我更改了输入上的onfocusandonblur属性以传递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>
于 2013-01-04T10:02:50.437 回答