2012-01-18 9 views
0

私はHTMLフォーム上のテキスト入力を検証しており、無効であればフォーカスを合わせてテキストを選択したいと考えています。フォーカスを返し、jqueryを使用してテキストを選択します

私の検証機能は、(単なる例)のように見える場合:あなたの関数で

jQuery.fn.DateHelper = function(text){ 
    return this.each(function(){ 
    //Make sure we're dealing with text-based form fields 
    if(this.type != 'text') 
    return; 

    // call the processNumber function when the onBlur event is fired and there is a value in the field. 
    $(this).blur(function() { 
     if (this.value != '')     
      processNUmber(this); 
     }); 

    function processNumber(txtField) { 
     if (!isNan(txtField)) { 
      alert("not a number"); 
      this.focus(); // this does not work. 
      // how to select text?  
     } 

    } 

}; 

答えて

1

あなたがtxtFieldパラメータを渡し、processNumber関数内代わりthisのそれを使用します。

function processNumber(txtField) { 
    if (!isNan(txtField)) { 
     alert("not a number"); 
     txtField.focus(); 
    } 
} 

も関数内の.each()ループ内のprocessNumber関数を宣言していますが、これは必ずしも必要ではありません。 .each()の外に存在し、このプラグインが実行されているすべての要素にアクセスできます。

UPDATE

あなたのコード関数は、しかし、いくつかの構文エラーがあります。ここでは

jQuery.fn.DateHelper = function(text){ 
    return this.each(function(){ 
     //Make sure we're dealing with text-based form fields 
     if(this.type != 'text') return; 

     // call the processNumber function when the onBlur event is fired and there is a value in the field. 
     $(this).blur(function() { 
      if (this.value != '') processNumber(this);//you were calling the processNUmber function, which doesn't exist 
     }).focus(function() { 
      this.select(); 
     }); 

     function processNumber(txtField) { 
      //isNan is broken: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/isNaN 
      //also txtField is a DOM element, not a string 
      txtField.value = txtField.value.replace(/[^0-9.]/g, ""); 
      if (txtField.value.length > 0) { 
       alert("not a number"); 
       txtField.focus();  
      } 
     } 
    });//this was omitted 
}; 

はデモです:http://jsfiddle.net/uQ45E/6/

+0

私は私の答えに** UPDATEにいくつかの変更を行い、私はこの時点でデモを行っています:http://jsfiddle.net/uQ45E/ – Jasper

+0

こんにちは、私は私のサンプルコードを入力するときにいくつかのタイプミスをしました。あなたの例http://jsfiddle.net/uQ45E/2/を少し修正しましたが、フィールドがフォーカスを返すとは思うが、テキストは選択されません。私はIEとFirefoxの両方を試しました。 –

+0

実際にはJSエラーを返します。 Focus()がnullまたはオブジェクトではありません –

関連する問題