jQuery匹配模式

时间:2009-12-17 10:38:08

标签: jquery forms css-selectors

在发送表单之前,我正在尝试使用jQuery 验证我的输入。

当数据库中插入无值时,这就是我的输入字段:

    <input
      class="field"
      type="text"
      style="background-color: rgb(255, 255, 255);"
      value="" name="input_18748_388_1257894000_"/>

当数据库中插入现有值时,这就是我的输入字段:

    <input
      class="field"
      type="text"
      style="background-color: rgb(255, 255, 255);"
      value=""
      name="input_18748_388_1257894000_46549876"/>

我想:

  • 检查数值是否已在数据库中

  • 检查用户是否要更换 现有价值无或零和 不允许。

  • 检查用户是否正在尝试 在新字段中插入0和 不允许。


解决:

  $("input[name^='input_"+var+"_']")
                .each(function() {
                    if ($(this).attr('name').match(/^input_\d+_\d+_\d+_\d+/)
                        && ($(this).val() == '' || $(this).val() <= 0))
                    {
                        displayDialog("<?=_('error')?>")
                        flag_error = 1;
                        return false;
                    }
            });
    // Submit the form.

5 个答案:

答案 0 :(得分:2)

试试这个:

$('input[name]')
    .filter (function () { 
        return $(this).attr('name').match (/^input_\d+_\d+_\d+_.+/$); 
    })
    .each (function () {
        if ($(this).val() <= 0) {
            //... raise a fuss ...
        }
    });

这需要根据您的喜好在submitchange进行调用。

答案 1 :(得分:1)

您需要绑定keydown事件并检查密钥代码。 此示例将禁用输入字段中的空格和0字符,其name属性以“_”结尾:

$('input[name$=_]').bind('keydown', function(e) {
    var key = e.keyCode || e.which;
    if (key == 48 || key == 32) {
        e.preventDefault();
    }
})

答案 2 :(得分:1)

 $("input[name^='input_"+var+"_']")
                .each(function() {
                    if ($(this).attr('name').match(/^input_\d+_\d+_\d+_\d+/)
                        && ($(this).val() == '' || $(this).val() <= 0))
                    {
                        displayDialog("<?=_('error')?>")
                        flag_error = 1;
                        return false;
                    }
                });

答案 3 :(得分:0)

将类“my_very_special_input”添加到您想要以这种方式验证的每个输入元素:

$(".my_very_special_input").change( function() {
                            if ($(this).val() <= 0) {
                                    alert('You cant delete this');
                                    flag_error = 1;
                                    return false;
                              }
                    });

答案 4 :(得分:0)

您可能会受益Regex Selector for jQuery Plugin。它允许代码如下:

$('div:regex(input,^input_(\d+|)+_?$)'); //just an example regex

另请注意,您可以组合多个属性选择器,即:

$("input[name^='input_'][name$='_']")