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」は機能しますが、「メッセージ」の手法は使用しません。

「Test3」は機能し、「メッセージ」の手法を使用します。

このコードをインラインHTMLではなくJavaScriptで機能させる方法を知っている人はいますか?

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>

したがって、あなたの関数は、あなたがしようとしたように呼び出すことができるスコープにはありません(より正確な用語がないため)。

<script>これを修正するために、ブロックとして内部の Html セクションにスクリプトを直接追加しました。

また、JavaScript コード自体にも小さな問題がありました。valueプロパティはvalueではなくと呼ばれValueます。

また、関数に渡す入力の属性onfocusと属性を変更しました。もちろん、必要に応じて ID を渡すように変更し、ID を使用してコントロールを検索することもできます。その場合、コントロールID が指定されていることを確認してください。onblurthis

とにかく、フィドルの 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 に答える