3

ドキュメントにリストされているcustom[function_name]funcCall[methodName]メソッドの両方を試しましたが、どちらも機能しないようです。

私のカスタム関数は次のようになります。

function einTest(field, rules, i, options) {
        if (field != null) {
            var x = field.toString();
            if (x.length != 5) {
                return options.allrules.ein.alertText2;
            }
        }
        else {
            return options.allrules.ein.alertText;
        }
    }

vaildationEngine-en.js ファイルに以下を作成しました。

"ein": {
                "alertText": "Not a number.",
                "alertText2": "Must be a 5 digit number."
    },

そして、次のhtmlフィールドで使用しようとしています:

<tr>
<td><b>Associate Number (EIN):</b></td>
<td><input type="text" id="EIN" name="EIN" class="validate[required,funcCall[einTest]]" data-prompt-position="inline" /></td>
</tr>

しかし、何も機能していないようです... einTest 関数が起動していません。

手がかりはありますか?

4

1 に答える 1

0

jsFiddle Demo

おそらく、関数を適切に公開していませんでした。関数をグローバル スコープで呼び出すには、スコープを設定する必要があります。「サードパーティの関数呼び出しを使用してフィールドを検証する」ドキュメント、基本的には、それが一緒にスコープされることを意味しますwindow

したがって、最初に行うことは、関数が公開されていることを確認することです。

window.einTest = function(field, rules, i, options) {

次に覚えておくべきことは、フィールドは実際には要素をラップする jquery オブジェクトであるということです。したがって、その価値や存在のように見えるためには、次を使用する必要がありますfield.val()

if (IsNumeric(field.val())) {

ヘルパー関数

//source: http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric
function IsNumeric(input)
{
 return (input - 0) == input && (input+'').replace(/^\s+|\s+$/g, "").length > 0;
}

これが最終結果です。

html

<p>Enter text in the input and then focus out to see the validation at work.</p>
<b>Associate Number (EIN):</b><br>
<form>
<input type="text" id="EIN" name="EIN" class="validate[required,funcCall[einTest]]" data-prompt-position="inline" />
</form>

js

window.einTest = function(field, rules, i, options) {
 if (IsNumeric(field.val())) {
  var x = field.val();
  if (x.length != 5) {
   return options.allrules.ein.alertText2;
  }
 }
 else {
  return options.allrules.ein.alertText;
 }
};

function IsNumeric(input)
{
 return (input - 0) == input && (input+'').replace(/^\s+|\s+$/g, "").length > 0;
}
//plus library initialization
于 2013-12-22T11:59:05.130 に答える