【问题标题】:Validate Jeditable field验证 Jeditable 字段
【发布时间】:2010-03-11 14:00:24
【问题描述】:

我正在使用Jeditable(发布到 CakePHP)在我的页面上进行输入。我希望用户只在 Jeditable 字段中填写数字,所以我的想法是也使用 jQuery validation plugin 来验证是否只使用了数字,我已经在我网站的其他部分使用了它。

当您单击 div 时,Jeditable 会动态创建一个带有输入的表单,因此 Jquery validate 似乎没有绑定任何内容,并且它似乎无法正常工作。

我可以通过 Jeditable 设置表单的类名(它只有一个类属性),创建的输入只有一个 name 属性,默认为“name”。

我的问题:

  • 这是只需要数字的好方法吗?
  • 如果是这样,如何使其与 Jquery validate 一起使用
  • 如果不是,有什么更好的解决方案?

在此先感谢,我期待得到任何答案;)

【问题讨论】:

    标签: jquery cakephp jquery-validate jeditable


    【解决方案1】:

    您可以直接在 jeditable 中使用 jQuery 验证插件来验证表单的字段

    $('.edit').editable(your_url, {
        onsubmit: function(settings, td) {
            var input = $(td).find('input');
            $(this).validate({
                rules: {
                    'nameofinput': {
                        number: true
                    }
                },
                messages: {
                    'actionItemEntity.name': {
                        number: 'Only numbers are allowed'
    
                    }
    
                }
            });
    
            return ($(this).valid());
        }
    });
    

    【讨论】:

      【解决方案2】:

      这段代码对我有用

      function isNumeric(value) {
        if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false;
        return true;
      }
      
      $('.edit').editable(your_url, {
          onsubmit: function(settings, td) {
            var input = $(td).find('input');
              var original = input.val();
              if (isNumeric(original)) {
                  console.log("Validation correct");
                  return true;
              } else {
                  console.log("Validation failed. Ignoring");
                  input.css('background-color','#c00').css('color','#fff');
                  return false;
              }
          }
      });
      

      【讨论】:

      • 哦。使用 console.log like
      • $(td).find('input');只需要表格数据吗?
      【解决方案3】:

      您可以在 Jeditable 中使用 onsubmit 事件并检查输入是否只有数字。 这只是一个例子,我没有尝试过:

      function isNumeric(value) {
        if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false;
        return true;
      }
      
      $('.edit').editable(your_url, {
          onsubmit: function(settings, original) {
              if (isNumeric(original)) {
                  return true;
              } else {
                  //display your message
                  return false;
              }
          }
      });
      

      【讨论】:

      • 谢谢,我没有时间真正测试它,在我的第一次尝试中它不起作用(总是返回错误)但正如我所说,我没有真正的时间去尝试它正确地,非常感谢您的回答! :)
      • 如果您仍然返回 false,Jeditable 似乎会提交:markmail.org/message/cgagaclwtk6bt4yv URL 中提到的代码更改不再可用:(我希望有人可以帮助我完成这项工作!
      【解决方案4】:

      【讨论】:

        【解决方案5】:

        对于我的项目,我已将函数名称更改为 isAcceptable,因为我允许括号、破折号、圆点作为电话号码的一部分。

        function isAcceptable(value) {
          if (value == null || !value.toString().match(/^[-+]?\d*\.?[\d\s().-]+$/)) return false;
          return true;
        }
        

        【讨论】:

          【解决方案6】:

          打开jquery.editable.js,找到:onedit函数

          /* setup some functions */
                  var onedit   = settings.onedit   || function() { }; 
          

          然后做一些类似的事情:

          $('.edit').editable(your_url, {
              onedit:function(){
                      alert("original value"+$(this).text());
             },
          });
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-12-06
            • 1970-01-01
            相关资源
            最近更新 更多