0

少し背景を探している場合、これは私の質問[HERE]に関連する継続的な問題です。

私は、関数を任意のフォーカスされた入力/要素で機能させるために、jQuery に関数を配置しようとしている初心者で自己興味のある Web コーダーです。

<textarea>私はここで、 :でのみ機能する 3 つの関数から始めましたid="dataInput_0"

<textarea
    data-id="0"
    class="classOne classTwo"
    id="dataInput_0"
    name="xInput_row_1"
        onFocus="functionOne();"
        onBlur="functionTwo();"
        onKeyUp="functionThree();">
</textarea>

<textarea>特定のクラスを持つ任意のセルに関数を適用する jQuery リスナーの使用方法について、良いヒントと情報を尋ねました。ただし、次のようにフォーカス機能とぼかし機能を適用する方法しかわかりませんでした。

<script type="text/javascript">
$(document).ready(function(){
    $('.classOne').keypress(function(e){
        if (e.which == 13) 
        {
            alert ( "message-return key not allowed");
            return false;
        }
    });
    $('.classOne').focus(function() {
        var d = this;
            d.className = d.className + " InFocus";
   });
    $('.classOne').blur(function() {
        var d = this;
            d.className = "classOne";
   });
})
</script>

そして、<textarea>コードは次のとおりです。

<textarea
    data-id="0"
    class="classOne classTwo"
    id="dataInput_0"
    name="xInput_row_1"
        onKeyUp="functionThree();">
</textarea>

functionThree() はここでのトリック バッグです。構文の理解が限られている (存在しない?) ため、javaScript 関数を jQuery に移行する際に問題が発生しています。

JavaScript 関数は、Excel からコピーされた区切り文字の識別と分割データに関連しており、多数の<textarea>s に貼り付けられます。

コード:

<script type="text/javascript">
     function functionThree() {
        var x = document.forms["formName"]["dataInput_0"].value;
        if (x.indexOf('\t') > 0 && x.indexOf('\n') > 0) {
        alert ("Can't paste rows & Columns in blocks, blah, blah, blah message");
        document.forms["formName"]["dataInput_0"].value = "";
        return false;
        }
        else 
         if (x.indexOf('\t') > 0) {
             var delimiterT = x.split('\t');
             for (var i = 0; i < delimiterT.length ; i++)
                document.getElementById("dataInput_" + i).value = (delimiterT[i]);
         }
         else
             if (x.indexOf('\n') > 0) {
                 var delimiterN = x.split('\n');
                 var j = 0;
                 for (var i = 0; i < delimiterN.length ; i++) {

                     document.getElementById("dataInput_" + j).value = (delimiterN[i]);
                     j += 4;
                 }
             }
             else
                 return false;
     }
</script>

これj += 4;は、4 列のサンプル フォームを想定していたためです。24 列あるとしたら、明らかに、フォーカスされた列の下j += 24;にある次の列に移動することになります。<textarea>

したがって、上記の javaScript は のみ["dataInput_0"]で機能し、フォーカスされ<textarea>た .

正しいjQuery構文は何ですか?

前もって感謝します!

4

1 に答える 1

0

同様の方法で keyup イベント ハンドラーをバインドできますが、functionThree では $(this).val() を使用して textarea の値を取得するだけです。jquery を使用すると、これらすべての getElementById を取り除くこともできます

$('.classOne').on({ 
keypress: function(){...},
focus: function(){...},
blur: function(){...},
keyup:function(){
var x = $(this).val();
    if (x.indexOf('\t') > 0 && x.indexOf('\n') > 0) {
    alert ("Can't paste rows & Columns in blocks, blah, blah, blah message");
    $(this).val("");
    return false;
    }
    else 
     if (x.indexOf('\t') > 0) {
         var delimiterT = x.split('\t');
         for (var i = 0; i < delimiterT.length ; i++)
            $("#dataInput_" + i).val(delimiterT[i]);
     }
     else
         if (x.indexOf('\n') > 0) {
             var delimiterN = x.split('\n');
             var j = 0;
             for (var i = 0; i < delimiterN.length ; i++) {

                 $("#dataInput_" + j).val(delimiterN[i]);
                 j += 4;
             }
         }
         else
             return false;
}
})
于 2013-04-21T10:49:08.830 に答える