私は自分のプロジェクトでjquery-validationを機能させようと戦ってきましたが、自分の jquery オブジェクトに接続していないようです。
私のpackage.jsonの外観は次のとおりです。
{
"name": "web01",
"version": "1.0.0",
"dependencies": {
"jquery": "2.1.3",
"pathjs": "0.8.1",
"jquery-validation" : "1.13.1"
},
"devDependencies": {
"browserify": "8.0.2",
"browserify-mustache": "0.0.4",
"browserify-shim": "3.8.2",
"phantomjs": "1.9.13",
"mocha-phantomjs": "3.5.2",
"mocha": "2.1.0",
"sinon": "1.12.2",
"proxyquireify": "1.1.0"
},
"browserify": {
"transform": [
"browserify-mustache",
"browserify-shim"
]
},
"browserify-shim": {
"jquery" : "$",
"jquery-validation": {
"exports": "null",
"depends": [ "jquery" ]
}
}
}
npm install はすべて正常に動作しますが、js ファイルで validate を呼び出そうとすると、関数が未定義であるというエラーが表示されます。約半ダースのスタックオーバーフローの質問を見てきましたが、私の問題は解決していません。js ファイルで require('jquery-validation') を呼び出す必要があるかどうかはわかりませんが、validate が jquery オブジェクトに追加されることを期待していました。
var $ = require('jquery');
var ajax = require('./ajax.js');
var constraints = {
rules: {
email: {
required: true,
email: true
},
displayName: "required",
password: {
required: true,
minlength: 6,
pattern: "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).+$"
}
},
messages: {
required: "Email not provided",
email: "this ain't no email"
},
displayName: {
required: "display name required"
},
password: {
required: "password required",
minlength: "not long enough",
pattern: "isn't complicated enough"
},
submitHandler: function($form) {
var data = extractData($form);
ajax.send({
type: 'POST',
url: '/register',
data: data,
error: function() {
console.log('failed to register');
}
});
function extractData($form) {
return {
email: $form.find('#email').val(),
displayName: $form.find('#displayName').val(),
password: $form.find('#password').val()
};
}
}
};
function registration(e) {
e.preventDefault();
$('#registration-form').validate(constraints);
}
module.exports = {
selector: '#registration-form',
registration: registration
};
誰もが同様の問題/これを解決する方法のアイデアを持っていましたか? validate.js を使用することもできますが、可能であれば jquery プラグインを使用することをお勧めします。
ありがとう