Nessuna descrizione

textarea.js 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. $.use(["jQuery", "form", "util"], function($, form, util) {
  2. var trim = "trim",
  3. readOnly = "readOnly",
  4. showOnly = "showOnly",
  5. modelName = 'textarea',
  6. def = "defVal",
  7. placeholder = "placeholder",
  8. required = "required";
  9. form.register(function($e) {
  10. var cls = util.classCheck($e[0], [modelName, trim, readOnly, showOnly]);
  11. if(cls[modelName]) {
  12. var n = $e.attr("name") || $e.attr("id"),
  13. ve, rules = [];
  14. if(!n) {
  15. throw "Attribute[name] is invalid";
  16. }
  17. dv = $e.attr(def) || "";
  18. $e.empty();
  19. if(cls[showOnly]) {
  20. $e.text(dv);
  21. } else {
  22. ve = $("<textarea></textarea>");
  23. ve.attr("rows", $e.attr("rows") || "3");
  24. ve.attr("cols", $e.attr("cols") || "20");
  25. var tmp = $e.attr(placeholder);
  26. if(tmp) ve.attr(placeholder, tmp);
  27. if(cls[readOnly]) ve.prop("readonly", "readonly");
  28. ve.val(dv);
  29. ve.appendTo($e);
  30. }
  31. return {
  32. name: n,
  33. get: function() {
  34. if(!cls[showOnly]) {
  35. var vd = cls[trim]?ve.val().trim():ve.val();
  36. return vd?vd:undefined;
  37. }
  38. },
  39. set: function(data) {
  40. if(cls[showOnly]) {
  41. $e.text(data)
  42. } else {
  43. ve.val(data);
  44. }
  45. },
  46. validate: function() {
  47. if(cls[required]) {
  48. var v=cls[trim]?ve.val().trim():ve.val();
  49. if(!v) {
  50. return "不可为空或空字符串";
  51. }
  52. }
  53. return util.validate(rules, this);
  54. },
  55. addRules: function(rule) {
  56. util.addRules(rules, rule);
  57. },
  58. reset: function() {
  59. this.set(dv);
  60. },
  61. valid: function() { util.valid($e); },
  62. invalid: function(reson) {
  63. util.invalid($e);
  64. util.error(reson);
  65. }
  66. };
  67. }
  68. });
  69. });